Statement sm = cn.createStatement(); 
string sql1="update table1 set....";
string sql2="update table2 set....";
sm.addBatch(sql1); 
sm.addBatch(sql2); 
sm.executeBatch() ;
问什么只更新了第一个table1的数据呢,也就是说只执行了sql1,而sql2没有执行,郁闷之中,求解!

解决方案 »

  1.   

    好好看下
    35Statement sm = cn.createStatement(); 
     API;理解一下事务!就OK
      

  2.   

    Hibernate3.0对批量更新和批量删除提供了支持,能够直接执行批量更新或批量删除语句,无需把被更新或删除的对象先加载到内存中
    通过Hibernate3.0执行批量更新的程序代码: Session session = sessionFactory.openSession();   Transaction tx = session.beginTransaction();   String hqlUpdate = "update Customer set name = :newName where name = :oldName";   int updatedEntities = s.createQuery( hqlUpdate )   .setString( "newName", newName )   .setString( "oldName", oldName )   .executeUpdate();   tx.commit();   session.close();  
      

  3.   

    改成手动提交试试 try
     {
      //保存当前自动提交模式
      boolean autoCommit=conn.getAutoCommit();
      //关闭自动提交
      conn.setAutoCommit(false);
      //使用Statement同时收集多条sql语句
      stmt.addBatch(insert_sql1);
      stmt.addBatch(insert_sql2);
      stmt.addBatch(update_sql3);
      ..
      //同时提交所有的sql语句
      stmt.executeBatch();
      //提交修改
      conn.commit();
      conn.setAutoCommit(autoCommit);
     }
     catch(Exception e)
     {
         e.printStackTrace()
         conn.rollback(); 
     }