JDBC连MYSQL事务处理
小弟在学 JDBC 连MYSQL编程
关于事务的实现 我写的代码是
try
{
Class.forName("com.mysql.jdbc.Driver");
conn = DriverManager.getConnectio("jdbc:mysql://localhot:3306/hkasdb", "root", "");
conn.setAutoCommit(false);
Statement statement = conn.createStatement();
statement.executeUpdate("truncate table tas_CMMenu");
String sql = "insert into tas_CMMenu values ('00000',2,'00000#00000','')";
statement.executeUpdate("insert into tas_CMMenu values ('00000',4,'00000#00','')");
statement.executeUpdate(sql);
conn.commit();
conn.close();
}
catch(Exception ex)
{
try
{
conn.rollback();
}
catch(Exception e)
{
e.printStackTrace();
}
}
我自己测试了下 发现如果是语句是
insert/update/delete可以回滚,前面的执行语句可以取消.
但是truncate就不行了
如truncate table XXX
insert into table XXX(一条错误语句)
回滚后,发现表内的数据还是清空了
想请教下各位大牛我这个代码有啥问题吗
------解决方案--------------------truncate table是删除所有数据。
你删除完,没事务提交,又插入
------解决方案--------------------1、TRUNCATE在各种表上无论是大的还是小的都非常快。如果有ROLLBACK命令DELETE将被撤销,而TRUNCATE则不会被撤销。
2、TRUNCATE是一个DDL语言,向其他所有的DDL语言一样,他将被隐式提交,不能对TRUNCATE使用ROLLBACK命令。
------解决方案--------------------truncate table无法回滚,会清除掉所有的数据