我可以使用相同的 QSQLQuery 变量来执行多个语句吗?
Can I use the same QSQLQuery variable to execute multiple statements?
我可以使用相同的 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()?
注意:我想我需要用到finish
函数,但是我没明白clear
函数到底是干什么的。文档说:
Clears the result set and releases any resources held by the query.
Sets the query state to inactive.
在你的情况下不需要使用这些函数中的任何一个,你可以不用你所询问的两行中的任何一行
Can I use the same QSQLQuery variable to execute multiple statements in Qt 5.3.2 using SQLite?
当然可以,但您没有义务这样做。例如,如果你想执行一个 SQL 查询,而你已经有一个有效的 QSqlQuery
对象,你已经完成了(你不愿意从中获取更多数据),您可以在新查询中使用相同的 QSqlQuery
对象,因为无需创建另一个 QSqlQuery
.
Should I call the finish or the clear function after each execution?
这是文档对 QSqlQuery::finish()
的描述:
Instruct the database driver that no more data will be fetched from this query until it is re-executed. There is normally no need to call this function, but it may be helpful in order to free resources such as locks or cursors if you intend to re-use the query at a later time.
这意味着只有当你想长期保留一个你用完的QSqlQuery
对象时,你才需要使用它,以便使用它。但是真的没有必要这样做,当你完成它时让你的对象超出范围就可以了。
Clears the result set and releases any resources held by the query. Sets the query state to inactive. You should rarely if ever need to call this function.
您可以查看 Master Detail Example and in particular createConnection()
function,了解如何多次使用同一个 QSqlQuery
对象。
我可以使用相同的 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()?
注意:我想我需要用到finish
函数,但是我没明白clear
函数到底是干什么的。文档说:
Clears the result set and releases any resources held by the query. Sets the query state to inactive.
在你的情况下不需要使用这些函数中的任何一个,你可以不用你所询问的两行中的任何一行
Can I use the same QSQLQuery variable to execute multiple statements in Qt 5.3.2 using SQLite?
当然可以,但您没有义务这样做。例如,如果你想执行一个 SQL 查询,而你已经有一个有效的 QSqlQuery
对象,你已经完成了(你不愿意从中获取更多数据),您可以在新查询中使用相同的 QSqlQuery
对象,因为无需创建另一个 QSqlQuery
.
Should I call the finish or the clear function after each execution?
这是文档对 QSqlQuery::finish()
的描述:
Instruct the database driver that no more data will be fetched from this query until it is re-executed. There is normally no need to call this function, but it may be helpful in order to free resources such as locks or cursors if you intend to re-use the query at a later time.
这意味着只有当你想长期保留一个你用完的QSqlQuery
对象时,你才需要使用它,以便使用它。但是真的没有必要这样做,当你完成它时让你的对象超出范围就可以了。
Clears the result set and releases any resources held by the query. Sets the query state to inactive. You should rarely if ever need to call this function.
您可以查看 Master Detail Example and in particular createConnection()
function,了解如何多次使用同一个 QSqlQuery
对象。