C# と VB.NET の質問掲示板

わんくま同盟

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト


(過去ログ 77 を表示中)
■45275 / )  2テーブル以上のトランザクション処理
□投稿者/ 匿名 (5回)-(2010/01/07(Thu) 19:51:45)

分類:[VB.NET/VB2005 以降] 

2つのテーブルにアクセスし、
2テーブル(テーブルA・テーブルB)の処理が完全に終了した場合のみコミット、
どちらか一方でも不具合があればロールバックしたいです。

現在、1テーブルのみで以下のようにしてますが、
単純に、「dRow = ds.Tables("テーブルA").NewRow」から
「da.Update(ds, "テーブルA") 」までをテーブルBに替えて
書き足すだけで良いのでしょうか?



−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−
Dim cn As New OleDb.OleDbConnection
Dim da As OleDb.OleDbDataAdapter
Dim ds As New DataSet
Dim cBuilder As New OleDb.OleDbCommandBuilder
Dim cnTran As OleDb.OleDbTransaction
Dim strSQL As String

cn.ConnectionString = "MDB情報"

Try
  da = New OleDb.OleDbDataAdapter(strSQL, cn)
  da.Fill(ds, "テーブルA")
  cn.Open()
  
  Dim dRow As DataRow

  dRow = ds.Tables("テーブルA").NewRow
  dRow("テーブルAのフィールド") = 値
  ds.Tables("テーブルA").Rows.Add(dRow)
  cBuilder.DataAdapter = da
  da.InsertCommand = cBuilder.GetInsertCommand
  cnTran = cn.BeginTransaction(IsolationLevel.ReadCommitted)
  da.InsertCommand.Transaction = cnTran
  da.Update(ds, "テーブルA")
  cnTran.Commit()
  cn.Close()

Catch ex As System.Data.OleDb.OleDbException

  If cnTran Is Nothing Then
  Else
    cnTran.Rollback()
  End If

Catch ex As Exception

  エラーメッセージ

End Try
−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−
返信 編集キー/


管理者用

- Child Tree -