2
(playerListTableAdapter.GetHeight(sortedPlayers[counter])

「SortedPlayers」は、主キーと一致する小数の配列です。

クエリGetHeightを呼び出すと、次のエラーが発生します。「ConstraintExceptionが処理されませんでした:制約を有効にできませんでした。1つ以上の行に、null以外、一意、または外部キーの制約に違反する値が含まれています。」

クエリのSQLステートメントは次のとおりです。

SELECT        Height
FROM            PlayerList
WHERE        (Number = @PlayerID)

注:データベースでは、Number主キーです。

実行をステップスルーすると、sortedPlayers[counter]がデータベース内のプレーヤーと一致することがわかります。

このエラーの原因について何か考えはありますか?

ありがとう!

-ドミニク

4

3 に答える 3

2

これを解決するには、DataTableでに設定できEnforceConstraintsますfalse

EplayerListTableAdapter.EnforceConstraints = false;

より詳細な回答はここにあります:http ://social.msdn.microsoft.com/forums/en-US/adodotnetdataproviders/thread/c2c9158d-cddf-40cf-bf6c-794dc3ef9c7f/

于 2012-08-31T16:04:41.767 に答える
2

クエリに主キーを追加します

SELECT       YourPrimaryKey, Height
FROM            PlayerList
WHERE        (Number = @PlayerID)
于 2012-08-31T16:02:02.943 に答える
2

クエリを機能させるために戦った後、次の構文を使用して、値に直接アクセスできることを発見しました。

decimal? Player1Hgt = dsPlayerTeam.PlayerList.Rows.Find(sortedPlayers[counter]).Field<decimal?>("Height");

これにより、tableAdapterクエリを使用せずにデータベースから値を取得できるようになり、非常に簡単になりました。

ちなみに、tableAdapterのEnforceConstraintsプロパティをfalseに設定しようとしましたが、それでもエラーがスローされました。

ご協力ありがとうございました!

于 2012-09-01T03:06:09.000 に答える