gpt4 book ai didi

java - 多次使用 `java.sql.CallableStatement` 不关闭

转载 作者:行者123 更新时间:2023-11-29 05:39:23 25 4
gpt4 key购买 nike

我有一个 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 保留为字段而不是变量。

注意:如果你需要资源并且你有很多准备好的语句和调用,你应该关闭那些不经常调用的大的。

我在微软找到了这个:diagram how it works来自 here .我找不到更好的照片了。

关于java - 多次使用 `java.sql.CallableStatement` 不关闭,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8012798/

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