gpt4 book ai didi

java - 循环中的PreparedStatement,如何使用

转载 作者:行者123 更新时间:2023-12-01 16:54:44 25 4
gpt4 key购买 nike

我正在尝试存储在 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();
}

或者我需要在循环中包含 executeUpdate() 吗?那么PreparedStatement 呢?或者我需要执行 executeBatch() 吗?

最佳答案

在 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();

关于java - 循环中的PreparedStatement,如何使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34710306/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com