SlideShare ist ein Scribd-Unternehmen logo
1 von 6
Downloaden Sie, um offline zu lesen
C# Database操作4
~トランザクション処理~
Microsoft MVP Hiroki.T
http://blog.hiros-dot.net/
copyright @2015 HIRO's.NET All Rights Reserved.
トランザクション処理
 今回は、INSERT/UPDATE/DELETE文の発行時にトランザク
ション処理を行う方法について学びます。
 トランザクション処理とは、複数の更新処理を連続して実行する
場合に、すべての処理が成功したときにのみ変更を有効にする
方法です。
 SqlConnectionクラスのBeginTransactionメソッドでトランザク
ション処理を開始します。
 SqlTransactionクラスのCommitメソッドでコミット処理(変更を有
効に)します。
 SqlTransactionクラスのRollbackメソッドでロールバック処理(変
更を取消)します。
[INS/UPD/DEL文実行]の処理
 前回作成した[INS/UPD/DEL文実行]ボタンのクリックイベントを、以下のように編集します。
private void btnExec_Click(object sender, EventArgs e)
{
using (var trans = _sqlConn.BeginTransaction()) -----①
{
try
{
SqlCommand command = _sqlConn.CreateCommand();
command.Transaction = trans; -----②
command.CommandText = txtSQL.Text;
int cnt = command.ExecuteNonQuery();
trans.Commit(); -----③
MessageBox.Show(cnt.ToString() + "件処理しました。");
}
catch (SqlException sqlex)
{
trans.Rollback(); -----④
MessageBox.Show(sqlex.Message);
}
}
}
[INS/UPD/DEL文実行]のコード解説
 ①でトランザクションを開始し、作成したトランザクションを変数
transに代入しています。
 ②は実行するコマンド(INSERT/UPDATE/DELETE)に対し、作
成したトランザクションを紐づけしています。
 ③は、実行したコマンドの変更を有効にするためにコミット処理を
実行しています。トランザクションを使用している場合はcomitメ
ソッドを実行しない限り、データベースへ反映されないので注意が
必要です。
 ④は、エラーが発生した場合にロールバックを行う処理です。
動作確認
 コードの編集が完了したら、実行して動作確認をしましょう。
 動作結果は前回とは変わりません。
 複数のコマンドが実行できるようにコードを編集してみましょう。
End

Weitere ähnliche Inhalte

Mehr von Hiroki Takahashi

C# TreeViewを使用する2
C# TreeViewを使用する2C# TreeViewを使用する2
C# TreeViewを使用する2Hiroki Takahashi
 
C# TreeViewを使用する1
C# TreeViewを使用する1C# TreeViewを使用する1
C# TreeViewを使用する1Hiroki Takahashi
 
C# 時間の掛かる処理をBackgroundWorkerコンポーネントで実行する
C# 時間の掛かる処理をBackgroundWorkerコンポーネントで実行するC# 時間の掛かる処理をBackgroundWorkerコンポーネントで実行する
C# 時間の掛かる処理をBackgroundWorkerコンポーネントで実行するHiroki Takahashi
 
C# ErrorProviderとValidatingイベント
C# ErrorProviderとValidatingイベントC# ErrorProviderとValidatingイベント
C# ErrorProviderとValidatingイベントHiroki Takahashi
 
C# 継承フォームの作成
C# 継承フォームの作成C# 継承フォームの作成
C# 継承フォームの作成Hiroki Takahashi
 
C# モーダルフォームとモードレスフォーム
C# モーダルフォームとモードレスフォームC# モーダルフォームとモードレスフォーム
C# モーダルフォームとモードレスフォームHiroki Takahashi
 
C#でディレクトリを再帰的に取得する
C#でディレクトリを再帰的に取得するC#でディレクトリを再帰的に取得する
C#でディレクトリを再帰的に取得するHiroki Takahashi
 
C#によるファイルの読み書き
C#によるファイルの読み書きC#によるファイルの読み書き
C#によるファイルの読み書きHiroki Takahashi
 

Mehr von Hiroki Takahashi (8)

C# TreeViewを使用する2
C# TreeViewを使用する2C# TreeViewを使用する2
C# TreeViewを使用する2
 
C# TreeViewを使用する1
C# TreeViewを使用する1C# TreeViewを使用する1
C# TreeViewを使用する1
 
C# 時間の掛かる処理をBackgroundWorkerコンポーネントで実行する
C# 時間の掛かる処理をBackgroundWorkerコンポーネントで実行するC# 時間の掛かる処理をBackgroundWorkerコンポーネントで実行する
C# 時間の掛かる処理をBackgroundWorkerコンポーネントで実行する
 
C# ErrorProviderとValidatingイベント
C# ErrorProviderとValidatingイベントC# ErrorProviderとValidatingイベント
C# ErrorProviderとValidatingイベント
 
C# 継承フォームの作成
C# 継承フォームの作成C# 継承フォームの作成
C# 継承フォームの作成
 
C# モーダルフォームとモードレスフォーム
C# モーダルフォームとモードレスフォームC# モーダルフォームとモードレスフォーム
C# モーダルフォームとモードレスフォーム
 
C#でディレクトリを再帰的に取得する
C#でディレクトリを再帰的に取得するC#でディレクトリを再帰的に取得する
C#でディレクトリを再帰的に取得する
 
C#によるファイルの読み書き
C#によるファイルの読み書きC#によるファイルの読み書き
C#によるファイルの読み書き
 

C# Database操作4 トランザクション処理-