Statement stmt=conn.createStatement();
String sql="begin tran;update 没有的表 set strComNo='0001' where ID=1;commit tran;";
stmt.execute(sql) ;怎么加了Begin tran 和 commit tran ,就不能返回错误了啦??

解决方案 »

  1.   

    try{
      conn.setAutoCommit(false);
      执行;
      conn.commit();
    }catch(Exception e){//注意,一切异常都要回滚
      conn.rollback();
    }
      

  2.   

    怎么你一个SQL语句放了好几句?
      

  3.   

    为什么不用conn 的提交事务的函数呢
    try
     {
    conn.setAutoCommit(false);
     stmt.ExecuteUpdate("update 没有的表 set strComNo='0001' where ID=1;commit tran");
    conn.commit();
    }
    catch(SQLException e)
    {
       if(conn!=null)
             conn.rollback();
    }
      

  4.   

    TO: dlxu(Coding超过了10W行)这个是语句块,我用Delphi和.net的时候都是这样用的!
    Oracle可以用begin...多条语句...end;这样用
      

  5.   

    我吧
    begin tran;
    update 没有的表 set strComNo='0001' where ID=1;
    commit tran;写到一起是作为一个语句块,相当于给数据库服务器一个存储过程来执行.这样事务就执行在数据库那边处理了,效率高些三如果
    try{
      conn.setAutoCommit(false);
      执行;
      conn.commit();
    }catch(Exception e){//注意,一切异常都要回滚
      conn.rollback();
    }
    的话,我想效率一定没有这么好.是不是Java就只能这样弄了哟?