JDBC连MYSQL事务处理

leizhizhou 2013-05-29 09:34:26
小弟在学 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(一条错误语句)
回滚后,发现表内的数据还是清空了

想请教下各位大牛我这个代码有啥问题吗
...全文
150 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
leizhizhou 2013-05-29
  • 打赏
  • 举报
回复
flagirls同学的意思是 包含truncate table的程序没法全部回滚? 还是可以用其它的方法来实现
菖蒲老先生 2013-05-29
  • 打赏
  • 举报
回复
1、TRUNCATE在各种表上无论是大的还是小的都非常快。如果有ROLLBACK命令DELETE将被撤销,而TRUNCATE则不会被撤销。 2、TRUNCATE是一个DDL语言,向其他所有的DDL语言一样,他将被隐式提交,不能对TRUNCATE使用ROLLBACK命令。
soton_dolphin 2013-05-29
  • 打赏
  • 举报
回复
truncate table无法回滚,会清除掉所有的数据
  • 打赏
  • 举报
回复
truncate table是删除所有数据。 你删除完,没事务提交,又插入

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧