■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() −−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−
|
|