トランザクション制御を行うサンプルコードについて説明します。
トランザクション制御は、明示的に行うことができます。
SymfowareConnection.BeginTransactionメソッド、SymfowareTransaction.Commitメソッド、またはSymfowareTransaction.Rollbackメソッドで明示的に行うことができます。これらのメソッドでトランザクションを制御していない場合は、トランザクションはSQL文を実行することで開始され、そのSQL文の処理完了後すぐにコミットされて終了します。
独立性水準およびアクセスモードの設定または変更は、SymfowareConnection.BeginTransactionメソッドの引数IsolationLevelと引数AccessModeで指定します。
本サンプルコードは、独立性水準をReadCommittedに設定後、INSERT文を実行します。
アプリケーションの手順
コネクションを接続します。詳細は、“A.2.1 接続および切断”を参照してください。
SymfowareConnection.BeginTransactionメソッドでトランザクションを開始します。
引数IsolationLevelに独立性水準(IsolationLevel.ReadCommitted)を設定します。
SymfowareTransactionオブジェクトが作成されます。
データ操作を行うオブジェクトを実行します。
データ操作が正常終了した場合、SymfowareTransaction.Commitメソッドを実行します。
データ操作が異常終了した場合、SymfowareTransaction.Rollbackメソッドを実行します。
コネクションを切断します。
オブジェクトを破棄します。
エラー処理については、“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(); // エラー処理ルーチンを記述 }