トップ回答者
DataAdapterでのTransactionがうまくいきません

質問
-
いつもすいません。
以下のTransactionを行っていますが、1回目は正常に処理されるのですが、2回目を呼び出すと「System.InvalidOperationException」エラーが発生します。
いろいろ見たのですが回避できません。アドバイスをいただけませんでしょうか。Using npgBuilder As Npgsql.NpgsqlCommandBuilder = New Npgsql.NpgsqlCommandBuilder(npgDataAdapter)
Using npgTrans As NpgsqlTransaction = Cnn.BeginTransaction(IsolationLevel.Serializable) <--ここでエラー
Try
If Cnn.State = ConnectionState.Closed Then
Cnn.Open()
End If
Dim tempRow = npgDataSet.Tables("T_Zip").Select("ZipCode=123-0000" )tempRow(0).BeginEdit()
tempRow(0).Item("ZipCode") = "123-0001"
tempRow(0).Item("Address") = "TEST"
tempRow(0).EndEdit()npgBuilder.GetUpdateCommand.Connection = Cnn
npgBuilder.GetUpdateCommand.Transaction = npgTransnpgDataAdapter.Update(npgDataSet.Tables("T_Zip"))
npgTrans.Commit()
Catch edbc As DBConcurrencyException
’/* Error Message */
Catch esql As SqlClient.SqlException
’/* Error Message */
Catch ex As NpgsqlException
’/* Error Message */
FinallyIf Not npgTrans.Connection Is Nothing Then
npgTrans.Rollback()
End If
If Not (Cnn.State = ConnectionState.Closed) Then
Cnn.Close()
End If
End Try
End Using
End Using
回答
-
たぶん2回目はコネクションが閉じているからだと思います。
ところで全体的にusing句の使い方がしっくりこないのですが、何かを参考にコードを記述されているのでしょうか? 通常、コネクションにはusing句を使用します。以下のコード例を参考にしてみて下さい。また、using句の意味を今一度確認してみて下さい。BeginTransaction メソッド ()
http://msdn.microsoft.com/ja-jp/library/86773566(VS.80).aspx
★良い回答には回答済みマークを付けよう! わんくま同盟 MVP - Visual C# http://d.hatena.ne.jp/trapemiya/- 回答としてマーク VS2008初心者 2010年10月18日 5:34
すべての返信
-
たぶん2回目はコネクションが閉じているからだと思います。
ところで全体的にusing句の使い方がしっくりこないのですが、何かを参考にコードを記述されているのでしょうか? 通常、コネクションにはusing句を使用します。以下のコード例を参考にしてみて下さい。また、using句の意味を今一度確認してみて下さい。BeginTransaction メソッド ()
http://msdn.microsoft.com/ja-jp/library/86773566(VS.80).aspx
★良い回答には回答済みマークを付けよう! わんくま同盟 MVP - Visual C# http://d.hatena.ne.jp/trapemiya/- 回答としてマーク VS2008初心者 2010年10月18日 5:34