トランザクションの制御方法について

トランザクションの制御方法について教えてください。
ODOSを利用したアプリケーションでのトランザクション制御は、コネクション単位で行います。
トランザクションを制御するには、以下をメソッド利用します。
  • RDOを利用する場合
    開始 rdoConnection.BeginTransメソッド
    コミット rdoConnection.CommitTransメソッド
    ロールバック rdoConnection.RollbackTransメソッド

  • ADOを利用する場合
    開始 Connection.BeginTransメソッド
    コミット Connection.CommitTransメソッド
    ロールバック Connection.RollbackTransメソッド

  • ADO.NETを利用する場合
    開始 OdbcConnection.BeginTransactionメソッド
    コミット OdbcTransaction.Commitメソッド
    ロールバック OdbcTransaction.Rollbackメソッド


例として、トランザクション制御のサンプルアプリケーションを示します。

【RDOアプリケーション】


'オブジェクト宣言
Dim Env As rdoEnvironment
Dim Con As rdoConnection

'rdoEnvironmentオブジェクトの生成
Set Env = rdoEngine.rdoEnvironments(0)

On Error GoTo ErrorProc

'1. コネクション接続
Set Con = Env.OpenConnection("DSN01", rdDriverNoPrompt, _
False, "UID=USER01;PWD=PASS01;")

'2. SET TRANSACTION文を実行する
Con.Execute "SET TRANSACTION READ WRITE, ISOLATION LEVEL READ COMMITTED", rdExecDirect

'3. トランザクション開始
Con.BeginTrans

'データ操作を行う処理を記述

'4. コミット
Con.CommitTrans

'5. コネクション切断
Con.Close

'6. オブジェクトの破棄
Set Con = Nothing
Set Env = Nothing

Exit Sub

'エラー処理
ErrorProc:

'4. ロールバック
Con.RollbackTrans

'エラー処理ルーチンを記述します

【ADOアプリケーション】

'オブジェクト宣言
Dim Con As Connection

'Connectionオブジェクトの生成と設定
Set Con = New Connection
Con.ConnectionString = "DSN=DSN01;UID=USER01;PWD=PASS01;"

On Error GoTo ErrorProc

'1. コネクション接続
Con.Open

'2. アクセスモードの設定
Con.Execute "SET TRANSACTION READ WRITE", , adCmdText

'3. IsolationLevelの設定
Con.IsolationLevel = adXactReadCommitted

'4. トランザクション開始
Con.BeginTrans

'データ操作を行う処理を記述

'5. コミット
Con.CommitTrans

'6. コネクション切断
Con.Close

'7. オブジェクトの破棄
Set Con = Nothing

Exit Sub

'エラー処理
ErrorProc:

'5. ロールバック
Con.RollbackTrans

'エラー処理ルーチンを記述します

【ADO.NETアプリケーション】


'オブジェクト宣言
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. トランザクション開始(独立性水準の設定)
'OdbcTransactionオブジェクトの生成
trn = con.BeginTransaction(IsolationLevel.ReadCommitted)

'4. データ操作を行う処理を記述
com.CommandText = "INSERT INTO TESTTBL(KEY_C) VALUES(1)"
'OdbcCommand.Transactionプロパティに生成したOdbcTransactionオブジェクトを設定
com.Transaction = trn
com.ExecuteNonQuery()

'5. コミット
trn.Commit()

'6. コネクション切断
con.Close()

'7. オブジェクトの破棄
com.Dispose()
con.Dispose()

'エラー処理
Catch ex As Microsoft.Data.Odbc.OdbcException

'5. ロールバック
trn.Rollback()

End Try
製品・サービス区分 Symfoware
製品・サービス情報
対象製品 Symfoware Server (Native Interface)
プラットフォーム Windows, Solaris, Linux
アンサー種別 技術サポート
このページの先頭へ