データベースでUpdate()メソッドを使用しようとすると、DBConcurrencyExceptionの問題が発生します。私は自動増分ID列を持つデータベースにテーブルがあり、DataTableは、このテーブル(私はMissingSchemaAction = MissingSchemaAction.AddWithKeyを使用すると自動増分部分を含む)から情報を取得するC#プログラムです。DataTableの自動インクリメント列をデータベースと同期する
行を作成してデータテーブルに追加した場合、データテーブルは自動増分されたID列(データベーステーブルが途切れたところから開始)を自動的に埋め込みます。これは問題ありません。しかし、私が追加したばかりの行を(最初にUpdate()を使用せずに)削除し、新しいものを追加すると、データテーブルの自動インクリメント列には、データベースが存在しない場所のDATATABLEの値に基づいて値が設定されます。並行性エラー。例えば
:私は名前の値を持つ新しい行を追加するときにデータテーブルにコピーされます
1 Apple
2 Orange
3 Pear
は、その「ぶどう」私が手:
データベース内のテーブルには、これらのレコードを持っています:結構です
1 Apple
2 Orange
3 Pear
4 Grape
が、しかし、update()メソッドを実行しない場合は、と私はブドウの行を削除し、新しい行「メロン」を追加私が取得:
1 Apple
2 Orange
3 Pear
5 Melon
私はUpdate()を実行しようとすると、データベースは次の自動インクリメントされた値になることを期待していますが、代わりに5が発生しています。 Update()は、ユーザーが「保存」ボタンをクリックしたときに発生するので、最終的に保存する前に上に示したように多くの変更を加えることが理想的ですが、Updateを使用するための並行性を保持する唯一の方法です)各行が追加/削除された後
どのデータベースですか? –
MySQLデータベース、申し訳ありませんが、私は言及していない、Update()は、データベースから情報を取得するために使用されるDataAdapterのメソッドです。 – NikonTC