Qt5中的void QSqlQuery::clear()和void QSqlQuery::finish()之间有什么区别



文档在主题上有点模糊:

从void QSqlQuery::clear((:

清除结果集并释放查询所占用的所有资源。将查询状态设置为非活动状态。如果需要的话,你应该很少调用此函数。

从void QSqlQuery::finish((:

指示数据库驱动程序不再从中提取数据此查询,直到重新执行为止。通常不需要打电话这个功能,但它可能有助于释放这样的资源如果以后打算重用查询,则将其作为锁或游标。

将查询设置为非活动。绑定值保留其值。

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

我认为这个想法相当清晰,函数之间并不相互暗示。第一个可以清除一切:

清除结果集并释放查询所拥有的所有资源

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

  1. 重新执行
  2. 已清除

绑定值保留其值

这意味着在finish()的执行之后,至少一些数据仍然是可访问的。

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

相关内容

  • 没有找到相关文章

最新更新