我的代码如下try{
for (i=0;i<rs.getRows();i++)
   {
String id=rs.getCell(0,i+2).getContents();
String cardid=rs.getCell(1,i+2).getContents();
String pwd=rs.getCell(2,i+2).getContents();
st.addBatch("insert into tx_card_info values('"+id+"','"+cardid+"','"+pwd+"')");
st.executeBatch();
//st.executeUpdate("insert into tx_card_info values('"+id+"','"+cardid+"','"+pwd+"')");
   }
con.commit();
}catch(SQLException e){
con.rollback();
out.print("错误行号:"+rs.getCell(0,i+1).getContents());
}前面已经设置数据库默认为不提交
con.setAutoCommit(false);
数据库链接没有问题,我把con.commit();提交语句放入循环中可以实现,但是放到循环外无法提交
请问是何问题?

解决方案 »

  1.   

    你吧st.executeBatch();也拿到循环外面
      

  2.   

    事务提交不能放到循环外面吗?
    我把st.executeBatch();放到外面也不行
    用我注释掉的st.executeUpdate("insert into tx_card_info values('"+id+"','"+cardid+"','"+pwd+"')");
    也不行
      

  3.   

    不会吧,一顿st.addBatch之后,再循外面执行 st.executeBatch();然后执行commit;然后关闭连接就这个过程!
      

  4.   

    噢,sql语句之间要用分号分割开
      

  5.   

    什么意思?
    难道要我这么写?
    st.addBatch("insert into tx_card_info values('"+id+"','"+cardid+"','"+pwd+"')"+",");
      

  6.   

    非要说全了,呵呵
    st.addBatch("insert into tx_card_info values('"+id+"','"+cardid+"','"+pwd+"');");
      

  7.   

    郁闷了,弄了一下午还是不行
    把st.executeBatch();
      con.commit();
    放到for循环里面就可以
    放到外面就不行,不知道为什么啊.....
      

  8.   

    预处理,例子如下:PreparedStatement ps = conn
       .prepareStatement("insert into person(id, name) values(?,?)");   ps.setInt(1, 3);//设置参数
       ps.setString(2, "elise");
       ps.addBatch(); //把语句加入批处理队列   ps.setInt(1, 4);
       ps.setString(2, "plegall");
       ps.addBatch();   ps.setInt(1, 5);
       ps.setString(2, "mike");
       ps.addBatch();   ps.executeBatch(); //执行批处理   ps.close(); //最后关闭
       conn.close();