Mysql 哪些特殊情况不应关闭报表?

Mysql 哪些特殊情况不应关闭报表?,mysql,jdbc,Mysql,Jdbc,有人告诉我,几乎总是在工作结束后(!)关闭陈述和联系 然而,我总是渴望重用频繁使用的语句 在哪些情况下我可以重用语句?您应该在完成一个工作单元后关闭一个语句(和连接)(如果不再需要它,可以更早地关闭)。可以重用语句的一个示例是在一个紧密循环中,您需要使用不同的输入值执行相同的查询(例如大容量插入)。在这种情况下,您在循环外部准备语句,并在循环完成后关闭它 你不应该试图将语句(或连接)保留超过一个工作单元的时间;试图重复使用内部代码可能会导致代码不透明、难以理解、大量无用代码、难以跟踪资源泄漏或其

有人告诉我,几乎总是在工作结束后(!)关闭陈述和联系

然而,我总是渴望重用频繁使用的语句


在哪些情况下我可以重用语句?

您应该在完成一个工作单元后关闭一个语句(和连接)(如果不再需要它,可以更早地关闭)。可以重用语句的一个示例是在一个紧密循环中,您需要使用不同的输入值执行相同的查询(例如大容量插入)。在这种情况下,您在循环外部准备语句,并在循环完成后关闭它

你不应该试图将语句(或连接)保留超过一个工作单元的时间;试图重复使用内部代码可能会导致代码不透明、难以理解、大量无用代码、难以跟踪资源泄漏或其他错误


唯一的例外是使用连接池实现(有时还提供语句池)。在这里,您不必自己考虑它(除了池的正确配置之外),因为您将关闭语句和它们自然边界上的连接。它们不会真正关闭,而是返回到连接(或语句)池。

准备好的语句的全部要点是它们可以重用。重用准备好的语句可以避免服务器每次都必须解析语句并创建执行计划。只有当您真正完成语句时,才应该关闭它们。@MikeW对于web服务器,我应该什么时候关闭语句?@MikeW我怀疑这是使用预处理语句的主要原因。我很确定这是因为参数化查询阻止了SQL注入。每段代码都是不同的。我能给出的唯一答案是“当你用完它们时”。@FabianBarney One会从阅读中得到这样的印象。防止SQL注入是一个有用的副作用。不幸的是,伴随着如此多的问题(和许多答案)而来的令人遗憾的缺乏理解导致了一些非常糟糕的实现,这些实现虽然不受SQL注入的影响,但效率却非常低。