gpt4 book ai didi

c++ - Qt5 中 void QSqlQuery::clear() 和 void QSqlQuery::finish() 有什么区别?

转载 作者:行者123 更新时间:2023-11-30 03:51:32 28 4
gpt4 key购买 nike

文档在这个主题上有点含糊:

来自 void QSqlQuery::clear() :

Clears the result set and releases any resources held by the query. Sets the query state to inactive. You should rarely if ever need to call this function.

来自 void QSqlQuery::finish() :

Instruct the database driver that no more data will be fetched from this query until it is re-executed. There is normally no need to call this function, but it may be helpful in order to free resources such as locks or cursors if you intend to re-use the query at a later time.

Sets the query to inactive. Bound values retain their values.

一个暗示另一个吗?在每种情况下将释放哪些资源?为什么我要使用一个而不是另一个?

最佳答案

我觉得思路还是比较清晰的,功能之间并不互相暗示。第一个确实清除了所有内容:

Clears the result set and releases any resources held by the query

在那之后你将无法获得关于这个查询的任何信息,而第二个只是将查询标记为不活动(好吧,它只是“说”它是空的)并准备查询以准备好

  1. 重新执行
  2. 清除

Bound values retain their values

这意味着在执行完finish()之后至少还有一些数据是可以访问的。

如果您不想创建另一个QSqlQuery 对象并想执行一个完全不同的查询,那么您可以使用clear() 而不必担心任何内存泄漏或其他原因。但是如果您计划稍后执行相同的查询,例如使用另一组绑定(bind)值,您可以使用 finish()。它还将释放一些驱动程序的内部资源(如文档中所述)。

关于c++ - Qt5 中 void QSqlQuery::clear() 和 void QSqlQuery::finish() 有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31196651/

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