トランザクションの制御方法について
- トランザクションの制御方法について教えてください。
- 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 | ||||
---|---|---|---|---|---|
製品・サービス情報 |
|
||||
アンサー種別 | 技術サポート |