新聞中心
SQL Server數(shù)據(jù)庫DataRelation的應(yīng)用是本文我們主要要介紹的內(nèi)容,我們知道,System.Data.DataRelation 類,表示兩個DataTable 對象之間的父/子關(guān)系。在常見的查詢中,可以利用SQL Server 2005/2008的CTE應(yīng)用來進(jìn)行遞歸查詢,這里有一個典型示例:http://www.cnblogs.com/downmoon/archive/2009/10/23/1588405.html。

目前創(chuàng)新互聯(lián)已為數(shù)千家的企業(yè)提供了網(wǎng)站建設(shè)、域名、雅安服務(wù)器托管、成都網(wǎng)站托管、企業(yè)網(wǎng)站設(shè)計、嵐縣網(wǎng)站維護(hù)等服務(wù),公司將堅持客戶導(dǎo)向、應(yīng)用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶和合作伙伴齊心協(xié)力一起成長,共同發(fā)展。
此外,在數(shù)據(jù)量不大的情況下,也可以用DataRelation進(jìn)行主子表或父子表的關(guān)聯(lián)。我們假定:有兩張表請假類型LeaveType和請假表Leave,這里是一個表結(jié)構(gòu)的SQL,代碼如下:
- create table LeaveType (
- PKID int identity(1,1),
- TypeName nvarchar(50) null,
- CurState smallint not null default 0,
- constraint PK_LEAVETYPE primary key (PKID)
- )
- go
- create table Leave (
- PKID int identity(1,1),
- Title nvarchar(50) null,
- Reason nvarchar(254) null,
- LoginID nvarchar(50) null,
- LeaveTypeID int ,
- DepartID int null,
- EmployeeID int null,
- AddTime datetime null,
- BeginTime datetime null,
- EndTime datetime null,
- TBeginDate datetime null,
- TEndDate datetime null,
- Remark nvarchar(1000) null,
- ModUser nvarchar(50) null,
- ModTime datetime null,
- CurState smallint not null default 0,
- constraint PK_LEAVE primary key (PKID)
- )
- go
再插入一些測試數(shù)據(jù):
代碼如下:
- truncate table LeaveType
- insert into
- LeaveType
- select '事假',1 union all
- Select '病假',1 union all
- select '婚假',1 union all
- select '產(chǎn)假',1 union all
- select '特休假',1
- go
- Insert into Leave
- select '請假'+Convert( Nvarchar(11),dateadd(dd,-500,getdate()),120),'準(zhǔn)備與方鴻漸結(jié)婚','孫嘉柔',3,1,1909,getdate(),'2010-1-1','2012-1-1','2010-1-1','2012-1-1',
- '這回鐵了心了','孫嘉柔',getdate(),1
- union all
- select '回娘家'+Convert( Nvarchar(11),dateadd(dd,-200,getdate()),120),'準(zhǔn)備為方鴻漸生孩子','孫嘉柔',4,1,1909,getdate(),'2010-1-1','2012-1-1','2010-1-1','2012-1-1',
- '這回鐵了心了','孫嘉柔',getdate(),1
- union all
- select
- '回娘家'+Convert( Nvarchar(11),dateadd(dd,-10,getdate()),120),'準(zhǔn)備與方鴻漸離婚','孫嘉柔',1,1,1909,getdate(),'2010-1-1','2012-1-1','2010-1-1','2012-1-1',
- '這回鐵了心了','孫嘉柔',getdate(),1
- union all
- select '回娘家'+Convert( Nvarchar(11),dateadd(dd,-2,getdate()),120),'準(zhǔn)備與方鴻漸離婚','孫嘉柔',2,1,1909,getdate(),'2010-1-1','2012-1-1','2010-1-1','2012-1-1',
- '這回鐵了心了','孫嘉柔',getdate(),1
- union all
- select '回娘家'+Convert( Nvarchar(11),getdate(),120),'準(zhǔn)備與方鴻漸離婚','孫嘉柔',2,1,1909,getdate(),'2010-1-1','2012-1-1','2010-1-1','2012-1-1',
- '這回鐵了心了','孫嘉柔',getdate(),1
- update Leave set Title='第'+cast(PKID as nvarchar(10))+'次'+Title
查詢主要代碼如下:
- protected void Page_Load(object sender, EventArgs e)
- {
- SqlConnection objConn = default(SqlConnection);
- SqlDataAdapter da = default(SqlDataAdapter);
- DataSet ds = default(DataSet);
- //DataRow dtrParent = default(DataRow);
- //DataRow dtrChild = default(DataRow);
- objConn = new SqlConnection(System.Configuration.ConfigurationManager.AppSettings["Testdb"]);
- da = new SqlDataAdapter("SELECT * FROM LeaveType", objConn);
- ds = new DataSet();
- try
- {
- objConn.Open();
- da.Fill(ds, "LeaveTypes");
- da.SelectCommand = new SqlCommand("SELECT * FROM Leave", objConn);
- da.Fill(ds, "Leaves");
- }
- catch (SqlException exc)
- {
- Response.Write(exc.ToString());
- }
- finally
- {
- objConn.Dispose();
- }
- ////Create the Data Relationship
- ds.Relations.Add("Type_Leave", ds.Tables["LeaveTypes"].Columns["PKID"], ds.Tables["Leaves"].Columns["LeaveTypeID"]);
- ////Display the Category and Child Products Within
- foreach (DataRow drParent in ds.Tables["LeaveTypes"].Rows)
- {
- lblDisplay.Text += "
" + drParent["TypeName"] + "
";
- foreach (DataRow drChild in drParent.GetChildRows("Type_Leave"))
- {
- lblDisplay.Text += "
- " + drChild["loginID"] + drChild["Title"] + drChild["Reason"] + "
";- }
- lblDisplay.Text += "";
- }
- }
最終效果:
關(guān)于SQL Server數(shù)據(jù)庫用DataRelation進(jìn)行主子表或父子表的關(guān)聯(lián)的知識就介紹到這里了,希望本次的介紹能夠?qū)δ兴斋@!
名稱欄目:SQLServer數(shù)據(jù)庫DataRelation的應(yīng)用示例詳解
標(biāo)題路徑:http://fisionsoft.com.cn/article/djipiss.html


咨詢
建站咨詢
