如果运行一个查询成功执行,如何运行两个查询,那么还必须执行第二个查询,否则应该还原第一个查询更改的值?
QSqlQuery *query=new QSqlQuery(connector.db);
QSqlQuery *query2=new QSqlQuery(connector.db);
此处查询和查询2应该运行或者不应运行任何查询。
答案 0 :(得分:1)
您需要transaction。使用以下代码,您可以确保它们中的任何一个或不执行任何一个。
QSqlDatabase::database().transaction();
// execute your queries here!
QSqlDatabase::database().commit();
如果底层数据库引擎支持事务,
QSqlDriver::hasFeature(QSqlDriver::Transactions)
将返回true
。您可以使用QSqlDatabase::transaction()
启动事务,然后使用要在事务上下文中执行的SQL命令,然后使用QSqlDatabase::commit()
或QSqlDatabase::rollback()
。使用事务时,您必须在创建查询之前启动事务。