我可以使用相同的 QSQLQuery
变量在 QT 5.3.2 中执行多个语句>使用 sqlite ?每次执行后,我应该调用finish
或clear
函数吗?
例如:
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
对象。