我的目的是尝试使用程序退出途径退出SQL Rollback而不进行整理。我的程序中有以下连接。但是,即使我在中途退出时没有设置任何con.com,数据仍然写入数据库。我做了调试模式,它落入异常并执行con.rollback();但其中没有回滚。这让我很困惑。
con = DriverManager.getConnection(value);
con.setAutoCommit(false);
try{
pstmt = con.prepareStatement("CREATE TABLE IF NOT EXISTS Test (Number varchar(255))")
pstmt.execute();
pstmt = con.prepareStatement("INSERT INTO `Test` (Number) values (?)");
pstmt.setString(1,"1");
pstmt.executeUpdate();
}catch(Exception){
con.rollback();
}
答案 0 :(得分:1)
这取决于数据库,例如在Oracle Create table ...或任何DDL执行隐式提交中,此提交之前的所有操作都无法回滚