那么这就是我的问题。我试图查询一个远程postgresql数据库,然后用结果填充两个相关的实例化表,所以我可以填写一个表格,显示两个表的信息。用单个表做这件事很简单,但现在我无法正确定义关系。我得到“对象引用未设置为对象的实例”错误什么即时做错了?C#如何创建一个数据集实例与两个表之间的关系
关系是“组件/ PROVIDER_ID”到“供应商/ ID”这样我就可以在组件自动填写表单提供商领域(虽然做了搜索查询)。
继承人我的代码:
OdbcDataAdapter sdata = new OdbcDataAdapter(//Query string whatever);
OdbcDataAdapter sdata2 = new OdbcDataAdapter(//Query string whatever);
DataSet ds = new DataSet(); //new dataset instance
DataTable dtbl = new DataTable(); //two new instanced tables
DataTable dtbl2 = new DataTable();
sdata.Fill(dtbl); //fill both tables with each query data
sdata2.Fill(dtbl2);
ds.Tables.Add(dtbl); //Add those tables to DataSet
ds.Tables.Add(dtbl2);
//So now im tring to create a relation between both tables
// im getting "“Object reference not set to an instance of an object”
DataRelation dr = new DataRelation("provcomp",
ds.Tables["dtbl"].Columns["id"],
ds.Tables["dtbl2"].Columns["id_prov_comp"]);
而且我想,以后我需要在为列创建某些键一些建议。
我可以得到一些帮助吗?请记住,即时编程相当新,一般编程和特别是C#。
我不认为你的表有名字' “DTBL”'和' “dtbl2”'。他们是变量名称。我想你可以像这样安全地使用它们:'dtbl.Columns [“id”],dtbl2.Columns [“id_prov_comp”]'(检查那些列已经创建) – ASh
数据集是否包含一个名为“ dtbl“?不,你没有设置表名。因此'ds.Tables [“dtbl”]'不起作用。但是,您可以在将表添加到DataSet后设置名称,然后再使用它们。 'ds.Tables [0] .TableName = “DTBL”;' –
[创建和配置在Visual Studio中的数据集(https://msdn.microsoft.com/en-us/library/04y282hb.aspx) –