该文档对此主题含糊不清:

void QSqlQuery::clear():



void QSqlQuery::finish():



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

最佳答案

我认为这个想法很明确,功能并不相互暗示。第一个清除所有内容:



之后,您将无法获得有关此查询的任何信息,而第二个查询只是将查询标记为非 Activity 状态(好吧,它只是“说”它为空)并准备好查询

  • 重新执行了
  • 已清除



  • 这意味着在执行finish()之后至少仍可以访问某些数据。

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

    10-08 05:20