1.定义DataSet对象和数据表Customers、Orders
DataSet ds = new DataSet("CustomerDS");
DataTable tabCus = new DataTable("Customers");
DataTable tabOrders = new DataTable("Orders");
2.定义表的列并添加到表中,最后将表添加到记录集ds中
(1)表Customers的数据列
DataColumn dcCustomerID = new DataColumn("CustomerID", System.Type.GetType("System.Int32"));
DataColumn dcCustomerName = new DataColumn("CustomerName", System.Type.GetType("System.String"));
(2)表Orders的数据列
DataColumn dcOrderID = new DataColumn("OrderID", System.Type.GetType("System.Int32"));
DataColumn dcOrdersCustomerID = new DataColumn("CustomerID", System.Type.GetType("System.Int32"));
(3).将列添加到表中并设置主键
tabCus.Columns.Add(dcCustomerID);
tabCus.Columns.Add(dcCustomerName);
tabCus.PrimaryKey = new DataColumn[] { dcCustomerID };
tabOrders.Columns.Add(dcOrderID);
tabOrders.Columns.Add(dcOrdersCustomerID);
tabOrders.PrimaryKey = new DataColumn[] { dcOrderID };
ds.Tables.Add(tabCus);
ds.Tables.Add(tabOrders);
3.创建DataRelation并添加到记录集中
(1)创建关联字段
DataColumn parent = ds.Tables["Customers"].Columns["CustomerID"];
DataColumn child = ds.Tables["Orders"].Columns["CustomerID"];
(2)创建DataRelation对象
DataRelation customerOrder = new DataRelation("customerOrder", parent, child);
(3)在记录集ds中添加关系
ds.Relations.Add(customerOrder);
4.为表添加记录
(1)为表Customers添加数据
DataRow row1 = tabCus.NewRow();
row1["CustomerID"] = 10000;
row1["CustomerName"] = "张玲玲";
DataRow row2 = tabCus.NewRow();
row2["CustomerID"] = 10001;
row2["CustomerName"] = "李娜";
tabCus.Rows.Add(row1);
tabCus.Rows.Add(row2);
(2)为表Orders添加数据
DataRow rowOrder1 = tabOrders.NewRow();
rowOrder1["OrderID"] = 1;
rowOrder1["CustomerID"] = 10000;
DataRow rowOrder2 = tabOrders.NewRow();
rowOrder2["OrderID"] = 2;
rowOrder2["CustomerID"] = 10000;
DataRow rowOrder3 = tabOrders.NewRow();
rowOrder3["OrderID"] = 3;
rowOrder3["CustomerID"] = 10001;
tabOrders.Rows.Add(rowOrder1);
tabOrders.Rows.Add(rowOrder2);
tabOrders.Rows.Add(rowOrder3);
5.数据集接受数据的修改
ds.AcceptChanges();
6.显示Orders表数据,其中Orders表中的CustomerID字段应该用Customers表中CustomerId字段所对应的CustomerName字段替换
Response.Write("---------订单表数据---------");
Response.Write("<table><tr><td>订单ID</td><td>客户姓名</td></tr>");
foreach (DataRow dr in ds.Tables["Orders"].Rows)
{
DataRow rowParent = dr.GetParentRow("customerOrder");
Response.Write("<tr>");
Response.Write("<td>");
Response.Write(dr["OrderID"].ToString());
Response.Write("</td>");
Response.Write("<td>");
Response.Write(rowParent["CustomerName"].ToString());
Response.Write("</td>");
Response.Write("</tr>");
}
Response.Write("</table>");
注:
1.DataSet中,使用DataRelation对象和Relations集合可以在各DataTable之间建立关联性
(1)DataSet 中各 DataTable 之间可以建立关联性
Primary Key ? Parent Column
Foreign Key ? Child Column
(2)使用DataRelation 对象与 Relations 集合
DataRelation dr= new DataRelation("CustomersOrders",ds.Tables("Customers").Columns("CustomerID"),ds.Tables("Orders").Columns ("CustomerID"))
ds.Relations.Add(dr);
2.GetChildRows与GetParentRows
(1).GetChildRows,可以取得关联 Child 表格中的数据
(2).GetParentRows,可以取得所关联的 Parent 表格中的数据
可以使用Visual Designer Tools来控制表格之间的关联
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请
点击举报。