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

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

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

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

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

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

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

アプリケーションの手順

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

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

  3. データ操作を行うオブジェクトを実行します。

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

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

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

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

// SymfowareConnectionオブジェクトの生成
SymfowareConnection con = new SymfowareConnection("DATA SOURCE=127.0.0.1;PORT=26551;" +
"INITIAL CATALOG=TEST;USER ID=USER01;PASSWORD=PASS01");
SymfowareTransaction trn = null;
// 1. コネクション接続
con.Open();
// 2. トランザクション開始(独立性水準の設定)
trn = con.BeginTransaction(IsolationLevel.ReadCommitted);
try
{
    // 3. データ操作を行う処理を記述
    SymfowareCommand com = new SymfowareCommand("INSERT INTO SAMPLE1.TESTTBL VALUES(133," +
"500.001,DATE'2007-04-10','TEST DATA')", con);
    com.Transaction = trn;   // Transactionプロパティの設定は省略可能
    int i = com.ExecuteNonQuery();
    // 4. コミット
    trn.Commit();
    // 5. コネクション切断
    con.Close();
    // 6. オブジェクトの破棄
    con.Dispose();
}
// エラー処理
catch (Exception e1)
{
    // 4. ロールバック
    trn.Rollback();
    // エラー処理ルーチンを記述
}