Query.ExecSQL之后是否需要Query.Close?

时间:2014-10-03 13:17:07

标签: delphi sql-insert tquery

在Delphi中,每当我使用TQuery在数据库上执行SELECT时,我都会使用try.Open跟随Query.Open,最后一部分使用Query.Close。这对我来说很有意义,因为查询仍然会不必要地存储数据(使用内存)。

但我的问题与我使用Query执行INSERT或DELETE时有关,因此需要使用Query.ExecSQL执行SQL 我的问题是,我必须在Query.ExecSQL之后使用Query.Close吗?

我的想法是,因为这是一个要在数据库上执行的命令,可能不会向Query返回任何数据,所以不需要进行Query.Close 但也许有人对Query.ExecSQL被调用后可以返回并存储在查询中的内容有更深入的了解,对于这些查询,Query.Close会有什么用处?

谢谢。

1 个答案:

答案 0 :(得分:4)

不需要它,因为ExecSQL没有维护记录集。

来自documentation(强调我的):

  

执行查询的SQL语句。调用ExecSQL来执行   当前分配给SQL属性的SQL语句。使用ExecSQL   执行不将游标返回给数据的查询(例如INSERT,   更新,删除和创建表)。

     

注意:对于SELECT语句,请调用Open而不是ExecSQL。

     

如果尚未准备好,ExecSQL会在SQL属性中准备该语句以供执行。为了提高性能,应用程序通常应该在第一次调用ExecSQL之前调用Prepare。