c#如何在两个表之间创建关系数据集实例

本文关键字:之间 创建 关系 实例 数据集 两个 | 更新日期: 2023-09-27 18:04:00

这就是我的问题。我试图查询远程postgresql DB,然后用结果填充两个相关的实例表,这样我就可以填写一个显示两个表信息的表单。使用单个表进行此操作很简单,但现在我无法正确定义关系。我得到"对象引用不设置为对象的实例"错误我做错了什么?

关系是"components/provider_id"到"provider/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#如何在两个表之间创建关系数据集实例

您应该将关系添加到DataSetRelations集合:

DataSet ds = new DataSet(); //new dataset instance
DataTable dtbl = new DataTable("Your Parent TableName");  //two new instanced tables
DataTable dtbl2 = new DataTable("Your Child TableName");
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);
ds.Relations.Add("Your Relation Name",dtbl.Columns["id"], dtbl2.Columns["id_prov_comp"]);
//or
//ds.Relations.Add(ds.Tables["dtbl"].Columns["id"], ds.Tables["dtbl2"].Columns["id_prov_comp"]);
ds.AcceptChanges();