Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 循环中的PreparedStatement,如何使用_Java_Loops_Prepared Statement_Derby_Javadb - Fatal编程技术网

Java 循环中的PreparedStatement,如何使用

Java 循环中的PreparedStatement,如何使用,java,loops,prepared-statement,derby,javadb,Java,Loops,Prepared Statement,Derby,Javadb,我正在尝试存储在ITEM表中创建的所有项目,我想知道我是否可以这样做: PreparedStatement stm = null; //String sql = "INSERT INTO ITEM (ID, TYPE, TITEL, UITGELEEND) VALUES ('%s', '%s', '%s', %b)"; try { stm = db.prepareStatement("INSERT INTO ITEM (ID, TYPE, TITEL,

我正在尝试存储在
ITEM
表中创建的所有项目,我想知道我是否可以这样做:

    PreparedStatement stm = null;
    //String sql = "INSERT INTO ITEM (ID, TYPE, TITEL, UITGELEEND) VALUES ('%s', '%s', '%s', %b)";

    try {
        stm = db.prepareStatement("INSERT INTO ITEM (ID, TYPE, TITEL, UITGELEEND) VALUES (?, ?, ?, ?)");

        for (int n = 0; n < ItemLijst.getItems().size(); n++) {
            Item huidigItem = ItemLijst.getItemObvIdx(n);

            stm.setString(1, huidigItem.getID().toString());
            stm.setString(2, huidigItem.getType().toString());
            stm.setString(3, huidigItem.getTitel());
            stm.setString(4, String.valueOf(huidigItem.isUitgeleend()));
        }
        stm.executeUpdate();
        stm.close();
    } catch (SQLException e) {
        e.printStackTrace();
    }
PreparedStatement stm=null;
//String sql=“插入项(ID、类型、TITEL、UITGELEEND)值(“%s”、“s”、“s”、“b)”;
试一试{
stm=db.prepareStatement(“插入项目(ID、类型、滴度、UITGELEEND)值(?,?,?)”;
对于(int n=0;n

或者我需要在循环中包含
executeUpdate()
?以及
准备好的报表
?或者我需要执行
executeBatch()

您需要为列表中的每个项目调用
executeUpdate
,因此它需要在循环中。您只需要准备一次语句,这样就应该在循环之外

因此:

试试看{
stm=db.prepareStatement(“插入项目(ID、类型、滴度、UITGELEEND)值(?,?,?)”;
对于(int n=0;n
您需要为列表中的每个项目调用
executeUpdate
,因此它需要在循环中。您只需要准备一次语句,这样就应该在循环之外

因此:

试试看{
stm=db.prepareStatement(“插入项目(ID、类型、滴度、UITGELEEND)值(?,?,?)”;
对于(int n=0;n
在for循环中运行查询不是最佳做法。最好按照以下方式使用批处理更新:

stm = db.prepareStatement("INSERT INTO ITEM (ID, TYPE, TITEL, UITGELEEND) VALUES (?, ?, ?, ?)");
db.setAutoCommit(false);  
for (int n = 0; n < ItemLijst.getItems().size(); n++) {
     Item huidigItem = ItemLijst.getItemObvIdx(n);
     stm.setString(1, huidigItem.getID().toString());
     stm.setString(2, huidigItem.getType().toString());
     stm.setString(3, huidigItem.getTitel());
     stm.setString(4,String.valueOf(huidigItem.isUitgeleend()));
     stm.addBatch();
     }
stm.executeBatch();
db.commit();
stm=db.prepareStatement(“插入项目(ID、类型、滴度、UITGelend)值(?,?,?)”;
db.setAutoCommit(假);
对于(int n=0;n
在for循环中运行查询不是最佳做法。最好按照以下方式使用批处理更新:

stm = db.prepareStatement("INSERT INTO ITEM (ID, TYPE, TITEL, UITGELEEND) VALUES (?, ?, ?, ?)");
db.setAutoCommit(false);  
for (int n = 0; n < ItemLijst.getItems().size(); n++) {
     Item huidigItem = ItemLijst.getItemObvIdx(n);
     stm.setString(1, huidigItem.getID().toString());
     stm.setString(2, huidigItem.getType().toString());
     stm.setString(3, huidigItem.getTitel());
     stm.setString(4,String.valueOf(huidigItem.isUitgeleend()));
     stm.addBatch();
     }
stm.executeBatch();
db.commit();
stm=db.prepareStatement(“插入项目(ID、类型、滴度、UITGelend)值(?,?,?)”;
db.setAutoCommit(假);
对于(int n=0;n
另一种可能是使用addBatch/executeBatch,在这种情况下,在循环内调用addBatch,然后在循环外调用executeBatch。不过,在我自己的程序中,我倾向于做您所做的事情,将executeUpdate放入循环中。最后,还有一个问题是何时执行事务提交。另一种可能是使用addBatch/executeBatch,在这种情况下,在循环内调用addBatch,然后在循环外调用executeBatch。不过,在我自己的程序中,我倾向于做您所做的事情,将executeUpdate放入循环中。最后,还有一个问题是何时执行事务提交。为什么要使用commit()?我以前使用过executeBatch(),它在没有提交的情况下工作。最好在开始准备好的语句之前先禁用自动提交。然后在完成所有操作后,您应该提交事务。请参阅页面的自动提交部分:为什么提交()?我以前使用过executeBatch(),它在没有提交的情况下工作。最好在开始准备好的语句之前先禁用自动提交。然后,在完成所有操作后,您应该提交事务。请参阅页面的自动提交部分: