【发布时间】:2011-01-28 20:32:25
【问题描述】:
在将 PreparedStatement 与没有任何池的单个公共连接一起使用的情况下,我可以为每个 dml/sql 操作重新创建一个实例,以保持预准备语句的功能吗?
我的意思是:
for (int i=0; i<1000; i++) {
PreparedStatement preparedStatement = connection.prepareStatement(sql);
preparedStatement.setObject(1, someValue);
preparedStatement.executeQuery();
preparedStatement.close();
}
代替:
PreparedStatement preparedStatement = connection.prepareStatement(sql);
for (int i=0; i<1000; i++) {
preparedStatement.clearParameters();
preparedStatement.setObject(1, someValue);
preparedStatement.executeQuery();
}
preparedStatement.close();
我的问题是我想把这段代码放到多线程环境中,你能给我一些建议吗?谢谢
【问题讨论】:
-
所以您的查询
sql不会在循环中更改?如果该查询对于循环的每次迭代都没有改变,那么为什么要为每次迭代创建一个新的PreparedStatement(在第一个代码 sn-p 中)?这样做有什么理由吗? -
让我们说如果查询正在改变,那么第二种方法仍然更好,对吧?有什么缺点吗?
标签: java jdbc prepared-statement