- - PR -
VB2005でトランザクションの書き方
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2007-08-23 15:09
お世話になります。
VB2005でトランザクションの書き方を教えて下さい。 SqlDataAdapterを使ってデータを更新しますが INSERT,UPDATE,DELETEのそれぞれにSqlTransactionを 書く必要がありますか。 コードを載せましたがおかしいでしょうか? MyCn.Open() Dim tran As SqlClient.SqlTransaction = MyCn.BeginTransaction() Try '***** 追加・更新・削除コマンド ***** MyDA.InsertCommand = CreateInsCmd() MyDA.UpdateCommand = CreateUpdCmd() MyDA.DeleteCommand = CreateDelCmd() MyDA.InsertCommand.Transaction = tran MyDA.UpdateCommand.Transaction = tran MyDA.DeleteCommand.Transaction = tran '***** 更新実行 ****************** MyDA.Update(tbl) MsgBox("更新終了") tran.Commit() Catch ex As Exception tran.Rollback() Throw MsgBox("更新異常終了") End Try MyCn.Close() 宜しくお願いします。 | ||||
|
投稿日時: 2007-08-23 15:34
さかもとと申します。
MsgBox("更新終了") はコミットの後のほうが良いと思います。 いかがでしょうか? _________________ ------------------------------------------ 拝啓、さかもとと申します♪ | ||||
|
投稿日時: 2007-08-23 15:46
さかもとさん、ありがとうございます。
MyDA.InsertCommand.Transaction = tran MyDA.UpdateCommand.Transaction = tran MyDA.DeleteCommand.Transaction = tran とそれぞれに書く必要がありますか? | ||||
|
投稿日時: 2007-08-23 16:54
Commit と Rollback のパターンを実行することによって、LANVIN さんご自身で確認できると思います。 考え方としては SqlCommand クラスのインスタンスがすべてのコマンドで同一かどうか。 どこまでをトランザクションのスコープとしたいかです。 一連の処理を 1 つのタイミングで実行するならば、トランザクションを設定しなければなりません。 _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 | ||||
|
投稿日時: 2007-08-23 16:58
じゃんぬねっとさん、ありがとうございます。
一連の処理を 1 つのタイミングで実行なので 全て書きます。 ありがとうございます。 | ||||
|
投稿日時: 2007-08-23 17:01
さかもとです。
あっ、そういう意味で「******」で囲んでいたのですね・・・。 MyDA.Update(tbl) としか記載が無かったので。 と思ったら解決のようなので編集。 じゃんぬねっと様がおっしゃる通りです。 _________________ ------------------------------------------ 拝啓、さかもとと申します。 [ メッセージ編集済み 編集者: さかもと 編集日時 2007-08-23 17:03 ] | ||||
|
投稿日時: 2007-08-23 19:53
さかもとさん、ありがとうございます。
また、宜しくお願いします。 | ||||
|
投稿日時: 2007-08-23 19:53
さかもとさん、ありがとうございます。
また、宜しくお願いします。 |