ページの先頭行へ戻る
Symfoware Server V10.0.0 アプリケーション開発ガイド(.NET Data Provider編)

A.3.7 トランザクション制御

トランザクション制御を行うサンプルコードについて説明します。

トランザクション制御は、明示的に行うことができます。

SymfowareConnection.BeginTransactionメソッド、SymfowareTransaction.Commitメソッド、またはSymfowareTransaction.Rollbackメソッドで明示的に行うことができます。これらのメソッドでトランザクションを制御していない場合は、トランザクションはSQL文を実行することで開始され、そのSQL文の処理完了後すぐにコミットされて終了します。

独立性水準およびアクセスモードの設定または変更は、SymfowareConnection.BeginTransactionメソッドの引数IsolationLevelと引数AccessModeで指定します。

本サンプルコードは、独立性水準をReadCommittedに設定後、INSERT文を実行します。

アプリケーションの手順

  1. コネクションを接続します。詳細は、“A.3.1 接続および切断”を参照してください。

  2. SymfowareConnection.BeginTransactionメソッドでトランザクションを開始します。
    引数IsolationLevelに独立性水準(IsolationLevel.ReadCommitted)を設定します。
    SymfowareTransactionオブジェクトが作成されます。

  3. 作成されたSymfowareTransactionオブジェクトを、データ操作を行うオブジェクト(SymfowareCommand)のTransactionプロパティに設定し、実行します。

  4. データ操作が正常終了した場合、SymfowareTransaction.Commitメソッドを実行します。
    データ操作が異常終了した場合、SymfowareTransaction.Rollbackメソッドを実行します。

  5. コネクションを切断します。

  6. オブジェクトを破棄します。

エラー処理については、“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