(playerListTableAdapter.GetHeight(sortedPlayers[counter])
“已排序的玩家”是一个小数组,与主键匹配。
当我调用查询 GetHeight 时,我收到以下错误:“ConstraintException未处理:无法启用约束。一行或多行包含违反非null,唯一或外键约束。“
查询的SQL语句是:
SELECT Height
FROM PlayerList
WHERE (Number = @PlayerID)
注意:在数据库中,数字是主键。
当我们逐步执行时,我们可以看到 sortedPlayers [counter] 与数据库中的玩家匹配。
有关导致此错误的原因的任何想法?
谢谢!
-Dominique
答案 0 :(得分:2)
您在查询中添加主键
SELECT YourPrimaryKey, Height
FROM PlayerList
WHERE (Number = @PlayerID)
答案 1 :(得分:2)
要解决此问题,您可以在DataTable上将EnforceConstraints
设置为false
。
EplayerListTableAdapter.EnforceConstraints = false;
答案 2 :(得分:2)
为了使查询正常工作,我发现我可以使用以下语法更直接地访问该值:
decimal? Player1Hgt = dsPlayerTeam.PlayerList.Rows.Find(sortedPlayers[counter]).Field<decimal?>("Height");
这允许我在不使用tableAdapter查询的情况下从数据库中提取值,并且非常简单。
顺便说一下,我确实尝试将tableAdapter的 EnforceConstraints 属性设置为false,但它仍然抛出错误。
感谢您的帮助!