关于ADO.NET DataSet 多表关联查询.
我在DataSet中有三张表,
table1(tb1_id,name,...)
table2(tb2_id,name,...)
table3(tb1_id,tb2_id)
要根据tb2_id查询出table1中关联的数据,(table2.name,table1.tb1_id,table1.name,.....)
应该怎么实现?
问题点数:100、回复次数:7Top
1 楼lfe()回复于 2005-04-15 16:07:14 得分 25
首先两个表要建立外键索引关系。
然后用DataRow.GetChildRows方法来获得相关数据Top
2 楼kv4000(ABCD(A Brave Csharp Developer))回复于 2005-04-15 16:18:25 得分 10
用join查询!和datarelation!Top
3 楼firejie(黑暗的左手)回复于 2005-04-15 16:20:55 得分 10
select tb1_id,name from table1 where tb1_id in (select tb1_id from table3 where tb2_id=@tb2_id)Top
4 楼wh8254(租个老婆结婚~~)回复于 2005-04-15 16:23:27 得分 5
怎么不在数据库中直接查询好,然后放在DataSet的一个DataTable中?Top
5 楼gyf19(秋天的云)回复于 2005-04-15 16:25:45 得分 35
1。建立两个 DataTable 对象之间的父/子关系
DataColumn parentCol;
DataColumn childCol;
parentCol = DataSet1.Tables["Customers"].Columns["CustID"];
childCol = DataSet1.Tables["Orders"].Columns["CustID"];
DataRelation relCustOrder;
relCustOrder = new DataRelation("CustomersOrders", parentCol, childCol);
DataSet1.Relations.Add(relCustOrder);
2。获得相关数据
private void GetChildRowsFromDataRelation(DataTable myTable ) {
DataRow[] arrRows;
foreach(DataRelation myRelation in myTable.ChildRelations){
foreach(DataRow myRow in myTable.Rows){
arrRows = myRow.GetChildRows(myRelation, DataRowVersion.Proposed);
// Print values of rows.
for(int i = 0; i < arrRows.Length; i++){
foreach(DataColumn myColumn in myTable.Columns){
Console.WriteLine(arrRows[i][myColumn]);
}
}
}
}
}
Top
6 楼panda2fw2(我爱Monkey)回复于 2005-04-15 16:44:07 得分 5
wh8254(为了俺老婆,努力写程序) 说的没错啊,在sql里写好连接查询,直接填充到dataset里就可以了,多方便啊。Top
7 楼huangyj(天外飞仙的师傅)回复于 2005-06-12 21:57:00 得分 10
wh8254(为了俺老婆,努力写程序) 的方法不是面向对象的,
楼主需要的是面向对象的操作办法。Top




