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"]);
我还认为,在那之后,我将需要一些关于创建一些键的列的建议。
我能得到一点帮助吗?
您应该将关系添加到DataSet
的Relations
集合:
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();