我有一个 java.sql.CallableStatement有 3 个参数,我需要多次调用它,为第三个参数传递不同的值。
正确的做法是什么?我每次都可以创建一个新的可调用语句,但据我所知它将访问数据库。
当前代码通过更改第三个参数调用相同的语句实例,但没有关闭它,似乎可以正常工作。跳过关闭可调用语句是否正常?
它在 MySQL jdbc 连接上运行。
代码片段:
CallableStatement pivot = connection.prepareCall("{CALL pivot(?, ?, ?)]");
pivot.setString(1, "a");
pivot.setString(2, "b");
while(someCondition) {
pivot.setString(3, "c");
ResultSet res = pivot.executeQuery();
try {
// ...
} finally {
res.close();
}
}
最佳答案
通过这种方式,您现在可以节省处理调用的一些步骤。 你看,每次准备调用 new 时,它都必须通过优化器继续进行 db,这会花费时间和资源。设置好 preparedCall 后,将其保持打开状态(并在 dbserver 上进行缓存)以获得更好的性能。
你在代码中错过了这个:
if(pivot == null)
pivot = connection.prepareCall("{CALL pivot(?, ?, ?)]");
你应该将 pivot 保留为字段而不是变量。
注意:如果你需要资源并且你有很多准备好的语句和调用,你应该关闭那些不经常调用的大的。
我在微软找到了这个:来自 here .我找不到更好的照片了。
关于java - 多次使用 `java.sql.CallableStatement` 不关闭,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8012798/