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

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

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

Re[3]: DataAdapterを使用した場合のTransaction


(過去ログ 94 を表示中)

[トピック内 4 記事 (1 - 4 表示)]  << 0 >>

■56366 / inTopicNo.1)  DataAdapterを使用した場合のTransaction
  
□投稿者/ bagabond (9回)-(2011/01/12(Wed) 00:21:03)

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

VB2008とSQL Server2008の環境でSqlDataAdapterを使用してデータの更新を行っていますが、Transactionでエラーになります。
以下の例でTransactionのBeginTransactionをoAdapter.InsertCommand = ・・・の後にもってくれば、エラーは無くなりますが、複数のテーブルをひとつのTransactionで処理できなくなります。どなたかご教授をお願いします。

Using connection As New SqlClient.SqlConnection(接続文字列)

    Dim oTrans As SqlClient.SqlTransaction = connection.BeginTransaction  <- この処理をしなけらばエラーは起こらない

    Dim oAdapter As SqlClient.SqlDataAdapter = New SqlClient.SqlDataAdapter(SQL文,connection)
Dim oBuilder As SqlClient.SqlCommandBuilder = New SqlClient.SqlCommandBuilder(oAdapter)

oAdapter.InserCommand = oBuilder.GetInserCommand() <- エラー「コマンドのTransactionプロパティが初期化されていない」
引用返信 編集キー/
■56367 / inTopicNo.2)  Re[1]: DataAdapterを使用した場合のTransaction
□投稿者/ shu (352回)-(2011/01/12(Wed) 07:41:17)
2011/01/12(Wed) 08:19:06 編集(投稿者)
2011/01/12(Wed) 08:18:18 編集(投稿者)

No56366 (bagabond さん) に返信

> oAdapter.InserCommand = oBuilder.GetInserCommand() <- エラー「コマンドのTransactionプロパテ

この後に
oAdapter.InsertCommand.Transaction = oTrans
が必要です。
引用返信 編集キー/
■56399 / inTopicNo.3)  Re[2]: DataAdapterを使用した場合のTransaction
□投稿者/ bagabond (11回)-(2011/01/12(Wed) 23:14:51)
No56367 (shu さん) に返信
shuさん、ご返事ありがとうございます。
ご指摘の方法ではありませんが、マイクロソフトのオンラインサポートの記事を参考にして、プログラミングしたら、正常に動作しました。
http://support.microsoft.com/kb/310351/ja
データセットに追加、変更、削除の処理がされている場合は、コマンドビルダーでデータアダプターにInsertCommand,UpdateCommand,DeleteCommandを設定する必要は無いようです。


'データセットに追加、変更、削除が加えられている。
Using connection As New SqlClient.SqlConnection(接続文字列)
Dim oTrans As SqlClient.SqlTransaction = connection.BeginTransaction
Dim oAdapter As SqlClient.SqlDataAdapter = New SqlClient.SqlDataAdapter(SQL文,connection)
Dim oBuilder As SqlClient.SqlCommandBuilder = New SqlClient.SqlCommandBuilder(oAdapter)

oAdapter.SelectCommand.Transaction = oTrans
oAdapter.Update(データセット、テーブル)
oTrans.Commit()




解決済み
引用返信 編集キー/
■56400 / inTopicNo.4)  Re[3]: DataAdapterを使用した場合のTransaction
□投稿者/ なちゃ (482回)-(2011/01/12(Wed) 23:20:03)
SQL Server 2008 と .NET Framework 2.0 SP1 以降であれば、
System.Transactions.TransactionScope
を使う方法をおすすめします。

引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -