トランザクション制御を行うサンプルコードについて説明します。
トランザクション制御は、明示的に行うことができます。
SymfowareConnection.BeginTransactionメソッド、SymfowareTransaction.Commitメソッド、またはSymfowareTransaction.Rollbackメソッドで明示的に行うことができます。これらのメソッドでトランザクションを制御していない場合は、トランザクションはSQL文を実行することで開始され、そのSQL文の処理完了後すぐにコミットされて終了します。
独立性水準およびアクセスモードの設定または変更は、SymfowareConnection.BeginTransactionメソッドの引数IsolationLevelと引数AccessModeで指定します。
本サンプルコードは、独立性水準をReadCommittedに設定後、INSERT文を実行します。
アプリケーションの手順
コネクションを接続します。詳細は、“A.3.1 接続および切断”を参照してください。
SymfowareConnection.BeginTransactionメソッドでトランザクションを開始します。
引数IsolationLevelに独立性水準(IsolationLevel.ReadCommitted)を設定します。
SymfowareTransactionオブジェクトが作成されます。
作成されたSymfowareTransactionオブジェクトを、データ操作を行うオブジェクト(SymfowareCommand)のTransactionプロパティに設定し、実行します。
データ操作が正常終了した場合、SymfowareTransaction.Commitメソッドを実行します。
データ操作が異常終了した場合、SymfowareTransaction.Rollbackメソッドを実行します。
コネクションを切断します。
オブジェクトを破棄します。
エラー処理については、“A.3.8 エラー処理”を参照してください。
'SymfowareConnectionオブジェクトの生成 Dim connection1 As New SymfowareConnection("DATA SOURCE=127.0.0.1;PORT=26551;INITIAL CATALOG=TEST;USER ID=USER01;PASSWORD=PASS01") Dim transaction1 As SymfowareTransaction = Nothing '1.コネクション接続 connection1.Open() '2.トランザクション開始(独立性水準の設定) transaction1 = connection1.BeginTransaction(IsolationLevel.ReadCommitted) Try '3.データ操作を行う処理を記述 Dim command1 As New SymfowareCommand("INSERT INTO SAMPLE1.TESTTBL VALUES(133,500.001,DATE'2007-04-10','TEST DATA')", connection1) command1.Transaction = transaction1 Dim num1 As Integer = command1.ExecuteNonQuery() '4.コミット transaction1.Commit() '5.コネクション切断 connection1.Close() '6.オブジェクトの破棄 connection1.Dispose() 'エラー処理 Catch exception1 As Exception '4.ロールバック transaction1.Rollback() 'エラー処理ルーチンを記述 End Try