- PR -

VB2005でトランザクションの書き方

投稿者投稿内容
LANVIN
大ベテラン
会議室デビュー日: 2007/03/12
投稿数: 211
投稿日時: 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()

宜しくお願いします。
さかもと
ぬし
会議室デビュー日: 2004/05/14
投稿数: 586
投稿日時: 2007-08-23 15:34
さかもとと申します。

MsgBox("更新終了")
はコミットの後のほうが良いと思います。

いかがでしょうか?
_________________
------------------------------------------
拝啓、さかもとと申します♪
LANVIN
大ベテラン
会議室デビュー日: 2007/03/12
投稿数: 211
投稿日時: 2007-08-23 15:46
さかもとさん、ありがとうございます。

MyDA.InsertCommand.Transaction = tran
MyDA.UpdateCommand.Transaction = tran
MyDA.DeleteCommand.Transaction = tran
とそれぞれに書く必要がありますか?
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2007-08-23 16:54
引用:

LANVINさんの書き込み (2007-08-23 15:46) より:

MyDA.InsertCommand.Transaction = tran
MyDA.UpdateCommand.Transaction = tran
MyDA.DeleteCommand.Transaction = tran
とそれぞれに書く必要がありますか?


Commit と Rollback のパターンを実行することによって、LANVIN さんご自身で確認できると思います。 考え方としては SqlCommand クラスのインスタンスがすべてのコマンドで同一かどうか。 どこまでをトランザクションのスコープとしたいかです。

一連の処理を 1 つのタイミングで実行するならば、トランザクションを設定しなければなりません。

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
LANVIN
大ベテラン
会議室デビュー日: 2007/03/12
投稿数: 211
投稿日時: 2007-08-23 16:58
じゃんぬねっとさん、ありがとうございます。

一連の処理を 1 つのタイミングで実行なので
全て書きます。

ありがとうございます。
さかもと
ぬし
会議室デビュー日: 2004/05/14
投稿数: 586
投稿日時: 2007-08-23 17:01
さかもとです。

あっ、そういう意味で「******」で囲んでいたのですね・・・。

MyDA.Update(tbl)
としか記載が無かったので。

と思ったら解決のようなので編集。

じゃんぬねっと様がおっしゃる通りです。

_________________
------------------------------------------
拝啓、さかもとと申します。

[ メッセージ編集済み 編集者: さかもと 編集日時 2007-08-23 17:03 ]
LANVIN
大ベテラン
会議室デビュー日: 2007/03/12
投稿数: 211
投稿日時: 2007-08-23 19:53
さかもとさん、ありがとうございます。

また、宜しくお願いします。
LANVIN
大ベテラン
会議室デビュー日: 2007/03/12
投稿数: 211
投稿日時: 2007-08-23 19:53
さかもとさん、ありがとうございます。

また、宜しくお願いします。

スキルアップ/キャリアアップ(JOB@IT)