2
(playerListTableAdapter.GetHeight(sortedPlayers[counter])

"Sorted Players"是一个小数数组,与主键匹配。

当我调用查询GetHeight时,我收到以下错误:“未处理 ConstraintException:无法启用约束。一行或多行包含违反非空、唯一或外键约束的值。”

查询的 SQL 语句是:

SELECT        Height
FROM            PlayerList
WHERE        (Number = @PlayerID)

注意:在数据库中,数字主键

当我们逐步执行时,我们可以看到sortedPlayers[counter]确实匹配数据库中的玩家。

关于导致此错误的原因的任何想法?

谢谢!

-多米尼克

4

3 回答 3

2

在努力让查询正常工作后,我发现我可以使用以下语法更直接地访问该值:

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

这使我可以在不使用 tableAdapter 查询的情况下从数据库中提取值,并且非常简单。

顺便说一句,我确实尝试将我的 tableAdapter的EnforceConstraints属性设置为 false,但它仍然抛出了错误。

谢谢您的帮助!

于 2012-09-01T03:06:09.000 回答
2

您在查询中添加主键

SELECT       YourPrimaryKey, Height
FROM            PlayerList
WHERE        (Number = @PlayerID)
于 2012-08-31T16:02:02.943 回答
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 回答