那就是我的问题。我正在尝试查询远程postgresql数据库,然后用结果填充两个RELATED实例表,所以我可以填写一个显示两个表的信息的表单。使用单个表执行此操作很简单,但现在我无法正确定义关系。我得到“对象引用未设置为对象的实例”错误我做错了什么?
Relation是“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#来说,这是一个相当新的东西。
答案 0 :(得分:1)
您应该将关系添加到DataSet
的<{3}}集合:
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();