首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2SE开发 >

JDBC连MYSQL事务处理解决方案

2013-06-19 
JDBC连MYSQL事务处理小弟在学 JDBC 连MYSQL编程关于事务的实现 我写的代码是try{Class.forName(com.mysql

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(一条错误语句)
回滚后,发现表内的数据还是清空了

想请教下各位大牛我这个代码有啥问题吗 MySQL JDBC 事务
[解决办法]
truncate table是删除所有数据。
你删除完,没事务提交,又插入
[解决办法]
1、TRUNCATE在各种表上无论是大的还是小的都非常快。如果有ROLLBACK命令DELETE将被撤销,而TRUNCATE则不会被撤销。
2、TRUNCATE是一个DDL语言,向其他所有的DDL语言一样,他将被隐式提交,不能对TRUNCATE使用ROLLBACK命令。
[解决办法]
truncate table无法回滚,会清除掉所有的数据

热点排行