gpt4 book ai didi

java - 批量使用JDBC preparedStatement

转载 作者:太空狗 更新时间:2023-10-29 22:38:45 30 4
gpt4 key购买 nike

我正在使用 Statement 的批处理来查询我的数据库。我现在做了一些研究,我想重写我的应用程序以使用 preparedStatement 但我很难弄清楚如何向 preparedStatement 批处理添加查询.

这就是我现在正在做的:

private void addToBatch(String sql) throws SQLException{
sttmnt.addBatch(sql);
batchSize++;
if (batchSize == elementsPerExecute){
executeBatches();
}
}

其中 sttmntStatement 类型的类成员。

我想做的是使用preparedStatementsetString(int, String)方法来设置一些动态数据,然后将其添加到批处理中。

不幸的是,我不完全理解它是如何工作的,以及我如何将 setString(int, String) 用于批处理中的特定 sql 或者创建一个新的 preparedStatemnt 对于我拥有的每个 sql,然后将它们全部加入一个批处理。

这有可能吗?还是我对 preparedStatement 的理解真的遗漏了什么?

最佳答案

阅读section 6.1.2 of this document举些例子。基本上,您使用相同的语句对象并在设置所有占位符后调用批处理方法。 Another IBM DB2 example这应该适用于任何 JDBC 实现。来自第二个站点:

try {
connection con.setAutoCommit(false);
PreparedStatement prepStmt = con.prepareStatement(
"UPDATE DEPT SET MGRNO=? WHERE DEPTNO=?");
prepStmt.setString(1,mgrnum1);
prepStmt.setString(2,deptnum1);
prepStmt.addBatch();

prepStmt.setString(1,mgrnum2);
prepStmt.setString(2,deptnum2);
prepStmt.addBatch();
int [] numUpdates=prepStmt.executeBatch();
for (int i=0; i < numUpdates.length; i++) {
if (numUpdates[i] == -2)
System.out.println("Execution " + i +
": unknown number of rows updated");
else
System.out.println("Execution " + i +
"successful: " + numUpdates[i] + " rows updated");
}
con.commit();
} catch(BatchUpdateException b) {
// process BatchUpdateException
}

关于java - 批量使用JDBC preparedStatement,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6860691/

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