簡單的介紹DataRelation類介紹,盡管DataSet數據集和數據庫中一樣也包含表和列,但其本身並不具有數據庫的相關表能力,但是,可以創建DataRelation對象,在DataTable之間建立主表和從表之間的關係.
DataRelation對象可以執行兩種功能
<1> 在相關表之間建立關聯.如果在父記錄行中,可以通過DataRelation對象獲得子記錄集,如果正使用子記錄,則可以通過DataRelation對象獲取父記錄.
<2>,可強制約束的引用完整性,如刪除父記錄時刪除相關的子記錄
關係是在父表和子表的匹配的列之間創建的,匹配列,是指兩個列的數據類型值必須相同.
下面列出了几個Relation類的几個廠用屬性
ChildColumns 獲取此關係的子DataColumn
ChildKeyConstraint 獲取關係的ForeignKeyConstaint
ChildTable 獲取此關係的子表
DataSet獲取datarelation所屬的DataSet
ParentColumns 獲取作為此DataRelation的父列的DataColumn對象的數組
ParentKeyConstraint 獲取UniqueConstraint,確保DataRelation對象的數組
ParentTable 獲取此DataRelation的父級DataTable
RelationName 獲取或設置用于從DataRelationCollection中檢索DataRelation的名稱
private void Page_Load(object sender, System.EventArgs e)
{
// 在這裡放置使用者程式碼以初始化網頁
// Connection();
//使用DataRelation類創建關係並利用父子關係讀取數據
string connstr="server=10.64.2.80;user id=ieb;pwd=ieb;database=cust";
string sql="select * from elogin1;select * from elogin";
SqlConnection conn=new SqlConnection(connstr);
SqlDataAdapter da=new SqlDataAdapter(sql,conn);
DataSet ds=new DataSet();
da.Fill(ds,"Table");
//命名表名
ds.Tables[0].TableName="elogin1";
ds.Tables[1].TableName="elogin";
//創建elogin1和elogin之間的父子關係
ds.Relations.Add("elogin1elogin",ds.Tables["elogin1"].Columns["工號"],ds.Tables["elogin"].Columns["工號"]);
//使用GetChindRows()方法遍歷子行
foreach(DataRow ws1 in ds.Tables["elogin1"].Rows)
{
this.Label1.Text+="<b>Parent Row:"+ws1["CustomerID"]+" "+ws1["CompanyName"]+"</b><br>";
this.Label1.Text+="Child Row:<br>";
foreach(DataRow ws in ws1.GetChildRows("工號"))
{
this.Label1.Text+=" "+ws["中文姓名"]+" "+ws1["nt"]+"<br>";
}
}
}