2

c# 2005 と Sql Server 2000 を使用してアプリケーションを作成しています。

一意の制約を持つテーブルがあり、私が懸念しているケースでは、([保存] を押すと) テーブルを更新するフォームを使用する 2 人のユーザーがいます。

たとえば、テーブルが NAMES( ID int, NAME varchar(20)) であり、一意の制約が NAME にある場合、保存する最初のユーザーが NAME 'David' と 'John' を追加すれば、それで問題ありません。2 番目のユーザーが、名前が「John」と「Susan」の行を含む DataTable を使用して更新しようとすると、SqlException がスローされます。ただし、 DataTable のどの行が制約に違反したかを示す例外はありません。

DB から一意の制約の構成の詳細を取得し、この情報を使用して DataTable の各行をチェックして、その行が制約に違反しているかどうかを確認する以外に、どの行に問題があるかを判断する方法はありますか?

4

2 に答える 2

2

エラーのある DataRows の配列を取得するには、DataTable.GetErrorsを使用する必要があります。

配列内の各 DataRow について、 DataRow.RowError と、 DataRow.GetColumnsInError でエラーになっている列を確認する必要あります。

于 2009-10-02T14:16:24.533 に答える
1

さらに、DataTable 内の行が単に互いに競合する可能性があるため、データベースでコミットされたものが DataTable と競合しない場合でも、データベース操作は失敗します。

于 2009-10-02T14:01:52.850 に答える