トランザクション制御を行うサンプルコードについて説明します。
トランザクション制御は、明示的に行うことができます。
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();
// エラー処理ルーチンを記述
}