因此,对于一个学校项目,我需要遵循一本名为《使用C#数据库进行编程》的书的说明。在本章中,我需要使用Bindingsources等创建一个datagridview。因此,在此线程的标题中出现错误的地方是在定义DataRelation时。代码如下:
private void CreateDataRelation()
{
DataColumn dataColumnParent, dataColumnChild;
//Hier definieer ik de variabelen dataColumnParent en Child en koppel ik ze aan de keys.
dataColumnParent = datasetRugby.Tables["RugbyTeams"].Columns["Id"];
dataColumnChild = datasetRugby.Tables["Spelers"].Columns["TeamId"];
//Dit is de uiteindelijke relatie die wordt aangemaakt die ik later zal toevoegen aan DataSet.
DataRelation dataRelationTeamSpeler = new DataRelation("relationTeamSpeler",
dataColumnParent,
dataColumnChild);
//Op regel 118 voeg ik de relatie toe aan de DataSet.
datasetRugby.Relations.Add(dataRelationTeamSpeler);
//Hier zet ik de foreignkey van de dataset van Spelers en koppel ik hem aan de dataColumnChild.
ForeignKeyConstraint foreignKeyConstraintTeamSpeler = dataRelationTeamSpeler.ChildKeyConstraint;
//Hiermee geef ik aan dat je de team niet mag verwijderen als er nog spelers in dat team spelen.
foreignKeyConstraintTeamSpeler.DeleteRule = Rule.None;
//Als de Id van het team veranderd dan moet het teamId meeveranderen van alle spelers die in dat team spelen doormiddel van regel 129.
foreignKeyConstraintTeamSpeler.UpdateRule = Rule.Cascade;
}
发生错误的行是此代码行
DataRelation dataRelationTeamSpeler = new DataRelation("relationTeamSpeler",
dataColumnParent,
dataColumnChild);`
我和同学们都不知道该如何解决。我们比较了代码,它们都具有相同的代码,因为这些书告诉我们该怎么做,但由于某种原因,错误只在我身上发生。
我该怎么办?帮助:(
干杯
答案 0 :(得分:0)
尽管这是家庭作业,但是您已经发布了一个可以接受的MCVE,并尝试了解决该问题,所以让我为您提供一些提示。
您当前的问题的答案是,dataColumnParent
或dataColumnParent
中的一个(或两个都)为空。找出问题所在的秘诀是Google搜索所收到的错误消息并阅读文档。
文档指出:
将空引用(在Visual Basic中为Nothing)传递给不接受为有效参数的方法时引发的异常。
如果您go to the documentation用于DataRelation
类,并且看到它的构造函数详细信息,则说明ArgumentNullException
的条件是:
一个或两个DataColumn对象包含null。
本质上,您的问题归结为当期望null
值时将non-null
值传递给构造函数。
换句话说,以下两行之一或全部返回null
。
datasetRugby.Tables["RugbyTeams"].Columns["Id"];
dataColumnChild = datasetRugby.Tables["Spelers"].Columns["TeamId"];
所以您应该找出原因。就像其他用户提到的那样,您可能误拼了表或列名。
在这种情况下找出问题的最佳方法是调试代码。假设您是一个新手,请按以下步骤操作:
在Visual Studio编辑器中,您可以单击行号左侧的灰色竖线,这将放置一个由红点表示的break-point
。以下是一个非常简单的示例。
确保您的项目处于Debug
模式。
现在运行您的程序,代码执行将在您放置断点的位置暂停/停止。
如果将鼠标悬停在变量上,您可以看到其当前内容。
还有Locals
,Watch
等窗口,它们也将有助于查看变量的内容。
通过检查变量的内容(在您的情况下为dataColumnParent
和dataColumnParent
),您通常可以轻松地缩小问题范围。
最后,这里是一些调试方面的好资源。
祝你好运!