1

プラットフォーム: V4.0、SQL Server 2008、Windows 2003。

以下のコードは SqlException on をスローしFillMethodます:

「主キー違反エラー。テーブルへの挿入に失敗しました」。

Fill メソッドの理由がわからない。毎回起こっているわけではありません。Column1 および Column2 - 複合キー。

Dim ObjDAdapter As SqlDataAdapter
String selectstring = "select * from Table where Column1 = 'A' and Column2 = 'B'"
ObjDAdapter = New SqlDataAdapter(selectString, myConnection)
ObjDAdapter.Fill(Dataset)
4

1 に答える 1

1

SQLクエリからの行でデータセットを埋める同様のコードがあり、正常に機能します。これが役立つかどうかを確認します。

Dim ObjDAdapter As SqlDataAdapter
String selectstring = "select * from Table where Column1 = 'A' and Column2 = 'B'"
ObjDAdapter = New SqlDataAdapter(selectString, myConnection)
ObjDAdapter.AcceptChangesDuringFill = False
ObjDAdapter.Fill(Dataset)

唯一の変更は、AcceptChangesDuringFillをfalseに設定することです。

ただし、作成したローカルデータテーブルの主キー設定がSQLテーブルとは異なるようです。

つまり、SQLテーブルに主キーとして設定された2つのフィールドがあり、ローカルテーブルにキーとして設定されたフィールドが1つしかない場合、行をローカルテーブルに挿入しようとすると、散発的なキー違反エラーが発生する可能性があります。

于 2012-08-17T14:26:45.970 に答える