做网站用到什么技术,wordpress 4.4漏洞,哪里可以免费设计装修房子,公司网站建设南宁这几天在学习MySQL数据的知识#xff0c;有一个小测试#xff0c;用来测试数据库的提交和回滚。 刚开始的时候真的没把这个当回事#xff0c;按照正常的步骤来讲的话#xff0c;如下所示#xff0c;加载驱动#xff0c;获取数据库的连接#xff0c;并且把数据库的自动提…这几天在学习MySQL数据的知识有一个小测试用来测试数据库的提交和回滚。 刚开始的时候真的没把这个当回事按照正常的步骤来讲的话如下所示加载驱动获取数据库的连接并且把数据库的自动提交给关闭掉。 1 //加载驱动
2 Class.forName(driver);
3 //获取数据库的连接
4 connection DriverManager.getConnection(url, user, password);
5 //关闭数据库事务的自动提交默认值为true
6 connection.setAutoCommit(false); 在做测试的时候自己使用的是建表语句总共三句话最后一句是错误的按照正常情况来讲执行错误语句以后程序会跳转到catch代码块中执行回滚语句。但是在刷新数据库以后查看数据库中的表格会发现数据库多了两张表前两条语句执行成功并没有回滚。 1 String[] sqls{2 create table A (Sno varchar(100) ,Sname varchar(20)),3 create table B (Cno varchar(100) ,Cname varchar(20)),4 create table C (Sno varchar(100),Cno varchar(100),Grade )5 };6 7 Connection connection JDBCUtil.getConnection();//获取数据库的连接8 try {9
10 Statement stmtconnection.createStatement();
11
12 for(String sql:sqls){
13 stmt.execute(sql);
14 }
15
16 connection.commit(); //提交事务
17 } catch (SQLException e) {
18 e.printStackTrace();
19 try {
20
21 connection.rollback();//事务的回滚
22 } catch (SQLException e1) {
23 // TODO Auto-generated catch block
24 e1.printStackTrace();
25 }
26
27
28 } 后来在网上查了一些资料得知在MySQL中对表的创建、删除和更改表结构等操作是回滚无效的DDL操作直接触发隐式提交任何事务回滚的前提是没有commit隐式提交直接执行commit了后续的rollback对前面的语句无效。如果想对建表语句回滚的话可以在catch语句块里面模拟回滚操作判断表格否存在存在就删除即可。转载于:https://www.cnblogs.com/tudou1179006580/p/9159005.html