ページの先頭行へ戻る
Symfoware Server V12.4.0 アプリケーション開発ガイド(ODBCドライバ編)
FUJITSU Software

C.2.8 トランザクション制御

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

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

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

アクセスモードの設定または変更は、SET TRANSACTION文またはConnection.Modeプロパティで行います。Connection.Modeプロパティはコネクションが切れている時だけ設定または変更することができます。コネクション接続中に変更が可能なSET TRANSACTION文による設定または変更を推奨します。

独立性水準の設定または変更は、Connection.IsolationLevelプロパティまたはSET TRANSACTION文で行います。SET TRANSACTION文で設定または変更を行う場合は、Connection.BeginTransメソッド実行時にConnection.IsolationLevelプロパティ設定値に変更されるため、Connection.BeginTransメソッド実行後に行う必要があります。このため、Connection.IsolationLevelプロパティによる設定または変更を推奨します。

本サンプルコードは、アクセスモードをREAD WRITE、独立性水準をREAD COMMITTEDに設定します。

アプリケーションの手順

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

  2. Connection.ExecuteメソッドでSET TRANSACTION文を実行しアクセスモードを設定します。

  3. Connection.IsolationLevelプロパティ独立性水準
    (IsolationLevelEnum.adXactReadCommitted)を設定します。

  4. Connection.BeginTransメソッドでトランザクションを開始します。

  5. データ操作が正常終了した場合、Connection.CommitTransメソッドを実行します。
    データ操作が異常終了した場合、Connection.RollbackTransメソッドを実行します。

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

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

エラー処理については、“C.2.9 エラー処理”を参照してください。

Public Class _Default
    Inherits Page

    Protected Sub Page_Load(ByVal sender As Object, ByVal e As EventArgs) Handles Me.Load

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

        'Connectionオブジェクトの生成と設定
        Con = New ADODB.Connection
        Con.Mode = ADODB.ConnectModeEnum.adModeRead
        Con.ConnectionString = "DSN=checkRDB;UID=ADMINISTRATOR;PWD=symfo000@admin"

        On Error GoTo ErrorProc

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

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

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

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

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

        '5. コミット
        Con.CommitTrans()

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

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

        Exit Sub

        'エラー処理
ErrorProc:

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

        'エラー処理ルーチンを記述
        Label1.Text = "No Connect<br>▲▼  COMMUNICATION OFF LINE  ▲▼"

    End Sub
End Class