【发布时间】:2014-11-28 13:20:57
【问题描述】:
在 Delphi 中,每当我使用 TQuery 对数据库执行 SELECT 时,我都会在 Query.Open 之后使用 try..finally,在 finally 部分使用 Query.Close。这对我来说很有意义,因为查询仍然会不必要地存储数据(使用内存)。
但是我的问题与我使用 Query 执行 INSERT 或 DELETE 时有关,因此需要使用 Query.ExecSQL 执行 SQL 我的问题是,我必须在 Query.ExecSQL 之后使用 Query.Close 吗?
我的想法是,因为这是要在数据库上执行的命令,想必不会给Query返回任何数据,所以没必要做Query.Close 但是,也许有人更深入地了解在调用 Query.ExecSQL 之后可能会返回并存储在 Query 中的内容(如果有的话),而 Query.Close 会对此有所帮助?
谢谢。
【问题讨论】:
-
它总是会返回一些东西,例如更新或插入的行。据我所知,您始终必须关闭查询。
-
我从来没有在 ExecSQL 之后这样做过。只要您清除 SQL 属性,数据集就会关闭。我认为这两种方式都不疼。
-
Open和Close只是将Active属性分别设置为True或False的替代方法。在调用ExecSQL之后检查Active的值,你就会得到答案。
标签: delphi sql-insert tquery