如何使多个数据库的表格合并成一张表并显示在一
个gridview中
篇一:DataSet多表关联实现本地数据复杂的查询 如果要显示两张数据库表的记录,最简单的方法是检索时将两张表中你要的数据一次检索出来,放入同一个DataTable来显示。
如果要显示两个以上DataTable中的数据,则需要将DataTable放入DataSet并建立relation就可以显示了。 下面是刚做的一个例子。另外,父表一定要有主键。建立关联时要用主键。 private
void
button1_Click(object
sender,
System.EventArgs e) {
DataTable dtName = new DataTable(NameDt); dtName.Columns.Add(ID, typeof(string)); dtName.Columns.Add(Name, typeof(string)); dtName.PrimaryKey
=
1
new DataColumn[]
{dtName.Columns[ID] }; dtName.Rows.Add(1, Name1); DataTable dtAddress = new DataTable(AddressDt); dtAddress.Columns.Add(ID, typeof(string)); dtAddress.Columns.Add(Address, typeof(string)); dtAddress.Rows.Add(1, Address1); dtAddress.Rows.Add(1, Address2); DataSet ds = new DataSet(); ds.Tables.Add(dtName); ds.Tables.Add(dtAddress); // 关键!建立表之间的关联
ds.Relations.Add(ForName, dtName.Columns[ID], dtAddress.Columns[ID]);
// 在子表中添加计算列,引用父表的数据。 dtAddress.Columns.Add(Name, Parent(ForName).Name);
dataGridView1.AutoGenerateColumns = false; dataGridView1.DataSource = ds;
dataGridView1.DataMember = AddressDt; }
DataSet多表关联实现本地数据复杂的查询
[c-sharp] view plaincopy 1. DataSet ds = new DataSet(); 2.
2
typeof(string),
3. //提取第一个表 放在ds中 4.
dp.CommandText
=
SELECT
*
FROM
ss_RolesInAction; 5.
ds.Tables.Add(dp.ExecuteDataTable(ss_RolesInAction));6. 7. //提取第二个表 放在ds中
8. dp.CommandText = SELECT * FROM ss_Action; 9. ds.Tables.Add(dp.ExecuteDataTable(ss_Action)); 10.
11. //提取第三个表 放在ds中
12. dp.CommandText = SELECT * FROM as_SiteMap; 13. ds.Tables.Add(dp.ExecuteDataTable(as_SiteMap)); 14. 15.
//
建
立
关
系
ss_Action.FID
=
ss_RolesInAction.FActionID ,ss_RolesInAction.FActionID为外键
16. ds.Relations.Add(relation1, ds.Tables[1].Columns[FID], ds.Tables[0].Columns[FActionID]); 17.
//
建
立
关
系
as_SiteMap.ID
=
ss_RolesInAction.FNodeID , ss_RolesInAction.FNodeID 为外键
18. ds.Relations.Add(relation2, ds.Tables[2].Columns[ID],
3