我可以使用相同的qsqlquery变量执行多个语句

Can I use the same QSQLQuery variable to execute multiple statements?

本文关键字:执行 变量 语句 qsqlquery 可以使 我可以      更新时间:2023-10-16

我可以使用相同的 QSQLQuery变量在 QT 5.3.2 中执行多个语句>使用 sqlite ?每次执行后,我应该调用finishclear函数吗?

例如:

QSqlQuery query;
query.prepare("INSERT INTO myTable (id, name) VALUES (:id, :name)");
query.bindValue(":id", id);
query.bindValue(":name", name);
if( !query.exec() )
{
    qDebug() << "Error";
}
query.finish() // or query.clear()?
query.prepare("INSERT INTO myProducts (product, price) VALUES (:product, :price)");
query.bindValue(":product", product);
query.bindValue(":price", price);
if( !query.exec() )
{
    qDebug() << "Error";
}
query.finish() // or query.clear()?

NOTE :我认为我需要使用finish函数,但是我不完全理解clear函数的功能。文档说:

清除结果集,并发布查询中持有的任何资源。 将查询状态设置为无活动。

无需在您的情况下使用这些功能,您可以做得很好,而无需您询问的两行中的任何一个


我可以使用相同的qsqlquery变量在qt 5.3.2中使用sqlite?

执行多个语句

当然可以,但是您没有义务这样做。例如,如果您想执行SQL查询,并且碰巧您已经有一个有效的QSqlQuery对象(您不愿意从中获取更多数据),则可以使用相同的QSqlQuery对象使用您的新查询,因为无需创建另一个QSqlQuery

我应该在执行每次执行后调用完成或清晰的功能吗?

这是文档对QSqlQuery::finish()的评价:

指示数据库驱动程序,直到重新执行此查询,将不再从此查询中获取数据。通常无需调用此函数,但是如果您打算在上重新使用查询,则可能会有所帮助,例如锁定或光标等资源。>时间。

这意味着只有在要长时间完成的QSqlQuery对象以便使用它时,才需要使用它。但是确实没有必要,只要完成后,只要让您的对象从范围中消失。

和关于 QSqlQuery::clear()

清除结果集,并发布查询中持有的任何资源。将查询状态设置为无效。如果需要调用此功能,您应该很少会

您可以查看主详细示例,尤其是createConnection()功能,以查看如何多次使用相同的QSqlQuery对象。