2017-01-17 11 views
-1

1つのクエリを実行すると2つのクエリを実行した後、2番目のクエリを実行しなければならない場合、最初のクエリで変更された値を元に戻す必要があります。どうすれば2つのクエリを正常に実行できますか?

QSqlQuery *query=new QSqlQuery(connector.db); 

QSqlQuery *query2=new QSqlQuery(connector.db); 

ここでは、クエリとクエリ2の両方が実行されるか、またはクエリが実行されません。

答えて

1

transactionが必要です。次のコードを使用すると、その両方またはいずれも実行されないようにすることができます。

QSqlDatabase::database().transaction(); 

// execute your queries here!  

QSqlDatabase::database().commit(); 

Documentation

基礎となるデータベースエンジンがトランザクションをサポートしている場合、QSqlDriver::hasFeature(QSqlDriver::Transactions)trueを返します。 QSqlDatabase::transaction()を使用してトランザクションを開始し、トランザクションのコンテキスト内で実行するSQLコマンドを入力した後、QSqlDatabase::commit()またはQSqlDatabase::rollback()のいずれかを使用できます。トランザクションを使用する場合は、クエリを作成する前にトランザクションを開始する必要があります。

関連する問題