2010-11-29 4 views
0

私は2つのデータセットと2つのデータアダプタ(各データセットに1つ)を定義しました。作成後、2つのdataAdapterのそれぞれに対して、私はSqlCommandBuilderを定義します。すべてがここまでうまくいく。 dataAdapter1.Update(dataSet1)を使用して、データベースから非常にokを追加、変更、消去することができます。ただし、erase、add、modifyの順ではありません。ここで並行性違反:UpdateCommandは、期待される1レコードの0に影響を与えました。 DB concurrencyExceptionが処理されなかった

は、最初のデータセットのコードは、データアダプターとsqlCommandBuilderです:

​​

そして第二:

  sql = "SELECT * From sucursale"; 
      da2 = new System.Data.SqlClient.SqlDataAdapter(sql, con); 
      da2.Fill(ds2, "sucursale"); 
      //face automat select, insert ,etc !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 
      cmdBuilder2 = new SqlCommandBuilder(da2); 

すべてのアイデアは、なぜこの出来事はありますか?

+0

不完全なコードですが、問題の実際の説明はありません。 –

答えて

12

あなたの情報は役に立たないです。しかし、私はエラーの意味を説明することができます。 ADO.Netに書き込ま

すべての更新コマンドの形式は次のとおり

Update col1, col2 where col1=col1value AND col2=col2value 

ADO.Netは、それがデータベースから選択された列の値を保持します。更新を実行するときは、コミット時に変更された列がないことです。

エラーが表示されるのは、選択と呼び出しの実行中にデータベース行が変更されたためです。da2.UpdateChanges(ds2)。おそらくロジックを見ると、2つの別々のデータセット(または2つの異なるスレッド)に行の値を選択し、選択を実行した後にその値を更新したことになります。

関連する問題