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

わんくま同盟

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

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


(過去ログ 77 を表示中)
■45295 / )  Re[2]: 2テーブル以上のトランザクション処理
□投稿者/ 匿名 (6回)-(2010/01/08(Fri) 20:51:32)
もりおさん、gtk2kさん、ありがとうございます。

> ・DataAdapter のインスタンスをもうひとつ作らなくてはいけません。
> ・Connection.BeginTransaction は一回にしなければいけません。

ちょうどこの部分で悩んでいました。

Dim da1,da2 As OleDb.OleDbDataAdapter と宣言して、
下記のようなソースを考えてみたのですが、
.BeginTransactionと.commitは対にしなければいけませんよね?
となると、どう対処したら良いのかがわかりません…


−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−
cn.Open()

Dim dRow As DataRow

da1 = New OleDb.OleDbDataAdapter(strSQL, cn)
da1.Fill(ds, "テーブル1")
dRow = ds.Tables("テーブル1").NewRow
dRow("フィールド") = 値
ds.Tables("テーブル1").Rows.Add(dRow)
cBuilder.DataAdapter = da1
da1.InsertCommand = cBuilder.GetInsertCommand
cnTran = cn.BeginTransaction(IsolationLevel.ReadCommitted)
da1.InsertCommand.Transaction = cnTran
da1.Update(ds, "テーブル1")

da2 = New OleDb.OleDbDataAdapter(strSQL, cn)
da2.Fill(ds, "テーブル2")
dRow = ds.Tables("テーブル2").NewRow
dRow("フィールド") = 値
ds.Tables("テーブル2").Rows.Add(dRow)
cBuilder.DataAdapter = da2
da2.InsertCommand = cBuilder.GetInsertCommand
cnTran = cn.BeginTransaction(IsolationLevel.ReadCommitted)
da2.InsertCommand.Transaction = cnTran
da2.Update(ds, "テーブル2")

cnTran.Commit()

cn.Close()
−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−
返信 編集キー/


管理者用

- Child Tree -