比如下面的代码片断,如果不用batch,如何实现?
谢谢        conn.setAutoCommit(false); 
        Statement stmt = conn.createStatement(sql);
        for (int i=0; i<10; i++) {
            String sql = "INSERT INTO my_table VALUES('"+i+"')";
            stmt.addBatch(sql);
        }
        String sql = "DELETE FROM table2 where id='2'";
        stmt.addBatch(sql);
        stmt.executeBatch();
        conn.commit();

解决方案 »

  1.   

    如果很多这种方法是很好的
    其它如果是少量的,我是直接用stmt.的其它方法,最后在总的后面加个conn.commit();
    还有其它么,我想知道^_^
      

  2.   

    我可能没说清除,我的目的是,
    执行的sql里面有的类型(比如Boolean)在各种数据库存储的数据可能不一样
    有的可能用true,false表示
    有的可能用1,0表示如果用prepareStatement,
    可以用下面的方法设置值
    pStmt.setBoolean(int index , boolean b)但是如果用了batch,
    好像就必须指定特定的值我就是为了解决这个问题。请问有没有什么好的方案?
      

  3.   

    另外,根据协议的描述,
    可能有的关系数据库不支持batch操作
      

  4.   

    嗯,找到一个例子测试一下先con.setAutoCommit(false);
    PreparedStatement updateSales = con.prepareStatement(
        "UPDATE COFFEES SET SALES = ? WHERE COF_NAME LIKE ?");
    updateSales.setInt(1, 50);
    updateSales.setString(2, "Colombian");
    updateSales.executeUpdate();
    PreparedStatement updateTotal = con.prepareStatement(
        "UPDATE COFFEES SET TOTAL = TOTAL + ? WHERE COF_NAME LIKE ?");
    updateTotal.setInt(1, 50);
    updateTotal.setString(2, "Colombian");
    updateTotal.executeUpdate();
    con.commit();
    con.setAutoCommit(true);