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();
这样也就不会插入