ADO.NETとの連携でトランザクション制御を行うサンプルコードについて説明します。
トランザクション制御は、明示的に行うことができます。
OdbcConnection.BeginTransactionメソッド、OdbcTransaction.CommitメソッドまたはOdbcTransaction.Rollbackメソッドで明示的に行うことができます。これらのメソッドでトランザクションを制御していない場合は、トランザクションはSQL文を実行することで開始され、そのSQL文の処理完了後すぐにコミットされて終了します。
アクセスモードの設定または変更は、SET TRANSACTION文で行います。
独立性水準の設定または変更は、OdbcConnection.BeginTransactionメソッドの引数IsolationLevelで指定する、またはSET TRANSACTION文で行います。SET TRANSACTION文で設定または変更を行う場合は、OdbcConnection.BeginTransactionメソッド実行時に引数IsolationLevelの設定値に変更されるため、OdbcConnection.BeginTransactionメソッド実行後に行う必要があります。このため、引数IsolationLevelによる設定または変更を推奨します。
本サンプルコードは、アクセスモードをREAD WRITE、独立性水準をREAD COMMITTEDに設定後、INSERT文を実行します。
アプリケーションの手順
コネクションを接続します。詳細は、“D.3.1 接続および切断”を参照してください。
OdbcCommand.ExecuteNonQueryメソッドでSET TRANSACTION文を実行しアクセスモードを設定します。
OdbcConnection.BeginTransactionメソッドでトランザクションを開始します。
引数IsolationLevelに独立性水準(IsolationLevel.ReadCommitted)を設定します。
OdbcTransactionオブジェクトが作成されます。
作成されたOdbcTransactionオブジェクトを、データ操作を行うオブジェクト(OdbcCommand)のTransactionプロパティに設定し実行します。
データ操作が正常終了した場合、OdbcTransaction.Commitメソッドを実行します。
データ操作が異常終了した場合、OdbcTransaction.Rollbackメソッドを実行します。
コネクションを切断します。
オブジェクトを破棄します。
エラー処理については、“D.3.9 エラー処理”を参照してください。
'オブジェクト宣言
Dim con As Microsoft.Data.Odbc.OdbcConnection
Dim com As Microsoft.Data.Odbc.OdbcCommand
Dim trn As Microsoft.Data.Odbc.OdbcTransaction
'OdbcConnectionオブジェクトの生成
con = New Microsoft.Data.Odbc.OdbcConnection("DSN=DSN01;UID=USER01;PWD=PASS01")
Try
'1. コネクション接続
con.Open()
'2. アクセスモードの設定
com = New Microsoft.Data.Odbc.OdbcCommand("SET TRANSACTION READ WRITE", con)
com.ExecuteNonQuery()
'3. トランザクション開始(独立性水準の設定)
trn = con.BeginTransaction(IsolationLevel.ReadCommitted)
'4. データ操作を行う処理を記述
'5. コミット
trn.Commit()
'6. コネクション切断
con.Close()
'7. オブジェクトの破棄
con.Dispose()
'エラー処理
Catch ex As Microsoft.Data.Odbc.OdbcException
'5. ロールバック
trn.Rollback()
'エラー処理ルーチンを記述
End Try