2017-01-19 3 views
0

私のプログラムでは、最初のクエリが正常に実行された場合は2番目のクエリも実行する必要があります。最初のクエリが実行され、2番目のクエリが実行される前に何かがインターネット接続が失われたり、プログラムが終了するようなことが起こった場合、何が行われるべきなのだろうと思いますか?qt実行クエリ

答えて

0

両方のクエリを1つのトランザクションとして実行する必要があります。これを行うには、最初のクエリを実行する直前にQSqlDatabase::transaction()を呼び出します。これによりトランザクションが開始されます。次に、2番目のクエリを実行します。

2番目のクエリも成功した場合は、QSqlDatabase::commit()を呼び出します。何らかの理由で2番目のクエリが失敗した場合は、QSqlDatabase::rollback()と呼び出すことができます。これにより、最初のクエリで加えられた変更もロールバックされます。

+0

最初のクエリが正常に実行され、2番目のクエリが失敗し、ロールバックも失敗した場合はどうなりますか?クエリが正常に実行され、コミットが失敗した場合はどうなりますか? –

+0

リンクをクリックしてドキュメントを読む機会がありましたか?コミットが失敗した理由を調べる方法があるようです。 –

+0

これは、更新または挿入の選択が同じであることだけを通知します。 –