我可以使用相同的 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
函数的作用 . 文件说:
清除结果集并释放查询所拥有的所有资源 . 将查询状态设置为非活动状态 .
1 回答
在你的情况下没有必要使用任何这些功能,你可以做得很好,没有你要问的两行
当然可以,但你没有义务这样做 . 例如,如果你想执行一个SQL查询,并且你已经有了一个有效的
QSqlQuery
对象(你不想从中获取更多的数据),你可以使用相同的QSqlQuery
对象使用新查询,因为不需要创建另一个QSqlQuery
.以下是文档对QSqlQuery::finish()所说的内容:
这意味着,如果要保留长时间使用的
QSqlQuery
对象,则只需要使用它,以便使用它 . 但实际上没有必要这样做,只要让你的对象超出范围就完成它 .关于QSqlQuery::clear():
您可以查看Master Detail Example,尤其是createConnection() function,以查看多次使用相同的
QSqlQuery
对象 .