当前位置: 代码迷 >> J2EE >> jdbc rollback,该怎么解决
  详细解决方案

jdbc rollback,该怎么解决

热度:689   发布时间:2016-04-17 23:43:40.0
jdbc rollback


Connection conn = null;
Statement smt = null;
ResultSet result = null;
  // 注册驱动
try {
Class.forName("com.mysql.jdbc.Driver");
  String url = "jdbc:mysql://localhost:3306/hehe";
String dbUsername = "root";
String dbPassword = "12345ad6";

// -----------------------------------------------------------------------------------------

System.out.println(" \"事务\" ");
conn = DriverManager.getConnection(url, dbUsername, dbPassword);
conn.setAutoCommit(false);
smt = conn.createStatement();
  smt.execute("insert into  dept  values(1,'a','s')");
  smt.execute("insert into  dept  values(2,'a','s')");
   smt.execute("insert into  dept  values('s','a','s')");//这个sql会产生异常 第一个值应该是int类型
                        conn.commit();
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
                         conn.rollback()
e.printStackTrace();


我知道rollback是用来回滚的 一个不成功 所有的都不成功
但是我conn.rollback() 注释掉 前两个依然不会被插入
我觉得前两个应该被插入到数据库中的啊
------解决方案--------------------
conn.rollback() 
这句注释掉
那么这句有没有注释掉
 smt.execute("insert into  dept  values('s','a','s')");//这个sql会产生异常 第一个值应该是int类型

如果这句没有注释掉
这个时候抛异常
就走不到
conn.commit();

这样也就不会插入
  相关解决方案