SQLServer数据库DataRelation的应用示例详解

SQL Server数据库DataRelation的应用是本文我们主要要介绍的内容,我们知道,System.Data.DataRelation 类,表示两个DataTable 对象之间的父/子关系。在常见的查询中,可以利用SQL Server 2005/2008的CTE应用来进行递归查询,这里有一个典型示例:http://www.cnblogs.com/downmoon/archive/2009/10/23/1588405.html。

目前创新互联已为数千家的企业提供了网站建设、域名、雅安服务器托管成都网站托管、企业网站设计、岚县网站维护等服务,公司将坚持客户导向、应用为本的策略,正道将秉承"和谐、参与、激情"的文化,与客户和合作伙伴齐心协力一起成长,共同发展。

此外,在数据量不大的情况下,也可以用DataRelation进行主子表或父子表的关联。我们假定:有两张表请假类型LeaveType和请假表Leave,这里是一个表结构的SQL,代码如下:

 
 
 
 
  1. create table LeaveType (
  2.    PKID                 int                  identity(1,1),
  3.    TypeName             nvarchar(50)         null,
  4.    CurState             smallint             not null default 0,
  5.    constraint PK_LEAVETYPE primary key (PKID)
  6. )
  7. go
  8. create table Leave (
  9.    PKID                 int                  identity(1,1),
  10.    Title                nvarchar(50)         null,
  11.    Reason               nvarchar(254)        null,
  12.    LoginID              nvarchar(50)         null,
  13.    LeaveTypeID            int ,
  14.    DepartID             int                  null,
  15.    EmployeeID           int                  null,
  16.    AddTime              datetime             null,
  17.    BeginTime            datetime             null,
  18.    EndTime              datetime             null,
  19.    TBeginDate           datetime             null,
  20.    TEndDate             datetime             null,
  21.    Remark               nvarchar(1000)       null,
  22.    ModUser              nvarchar(50)         null,
  23.    ModTime              datetime             null,
  24.    CurState             smallint             not null default 0,
  25.    constraint PK_LEAVE primary key (PKID)
  26. )
  27. go

再插入一些测试数据:

代码如下:

 
 
 
 
  1. truncate table LeaveType
  2. insert into 
  3. LeaveType 
  4. select '事假',1 union all
  5. Select '病假',1 union all
  6. select '婚假',1 union all
  7. select '产假',1 union all
  8. select '特休假',1 
  9. go
  10. Insert into Leave
  11. select '请假'+Convert( Nvarchar(11),dateadd(dd,-500,getdate()),120),'准备与方鸿渐结婚','孙嘉柔',3,1,1909,getdate(),'2010-1-1','2012-1-1','2010-1-1','2012-1-1',
  12. '这回铁了心了','孙嘉柔',getdate(),1
  13. union all
  14. select '回娘家'+Convert( Nvarchar(11),dateadd(dd,-200,getdate()),120),'准备为方鸿渐生孩子','孙嘉柔',4,1,1909,getdate(),'2010-1-1','2012-1-1','2010-1-1','2012-1-1',
  15. '这回铁了心了','孙嘉柔',getdate(),1
  16. union all 
  17. select  
  18. '回娘家'+Convert( Nvarchar(11),dateadd(dd,-10,getdate()),120),'准备与方鸿渐离婚','孙嘉柔',1,1,1909,getdate(),'2010-1-1','2012-1-1','2010-1-1','2012-1-1',
  19. '这回铁了心了','孙嘉柔',getdate(),1
  20. union all
  21. select '回娘家'+Convert( Nvarchar(11),dateadd(dd,-2,getdate()),120),'准备与方鸿渐离婚','孙嘉柔',2,1,1909,getdate(),'2010-1-1','2012-1-1','2010-1-1','2012-1-1',
  22. '这回铁了心了','孙嘉柔',getdate(),1
  23. union all
  24. select '回娘家'+Convert( Nvarchar(11),getdate(),120),'准备与方鸿渐离婚','孙嘉柔',2,1,1909,getdate(),'2010-1-1','2012-1-1','2010-1-1','2012-1-1',
  25. '这回铁了心了','孙嘉柔',getdate(),1
  26. update Leave set Title='第'+cast(PKID as nvarchar(10))+'次'+Title 

查询主要代码如下:

 
 
 
 
  1. protected void Page_Load(object sender, EventArgs e)
  2.         {
  3.             SqlConnection objConn = default(SqlConnection);
  4.             SqlDataAdapter da = default(SqlDataAdapter);
  5.             DataSet ds = default(DataSet);
  6.            //DataRow dtrParent = default(DataRow);
  7.             //DataRow dtrChild = default(DataRow);
  8.             objConn = new SqlConnection(System.Configuration.ConfigurationManager.AppSettings["Testdb"]);
  9.             da = new SqlDataAdapter("SELECT * FROM LeaveType", objConn);
  10.             ds = new DataSet();
  11.             try
  12.             {
  13.                 objConn.Open();
  14.                 da.Fill(ds, "LeaveTypes");
  15.                 da.SelectCommand = new SqlCommand("SELECT * FROM Leave", objConn);
  16.                 da.Fill(ds, "Leaves");
  17.             }
  18.             catch (SqlException exc)
  19.             {
  20.                 Response.Write(exc.ToString());
  21.             }
  22.             finally
  23.             {
  24.                 objConn.Dispose();
  25.             }
  26.             ////Create the Data Relationship
  27.             ds.Relations.Add("Type_Leave", ds.Tables["LeaveTypes"].Columns["PKID"], ds.Tables["Leaves"].Columns["LeaveTypeID"]);
  28.             ////Display the Category and Child Products Within
  29.             foreach (DataRow drParent in ds.Tables["LeaveTypes"].Rows)
  30.             {
  31.                 lblDisplay.Text += "

    " + drParent["TypeName"] + "

      ";
    •                 foreach (DataRow drChild in drParent.GetChildRows("Type_Leave"))
    •                 {
    •                     lblDisplay.Text += "
    • " + drChild["loginID"] + drChild["Title"] + drChild["Reason"] + "
    • ";
    •                 }
    •                 lblDisplay.Text += "
    ";
  32.             }
  33.         }

最终效果:

关于SQL Server数据库用DataRelation进行主子表或父子表的关联的知识就介绍到这里了,希望本次的介绍能够对您有所收获!

新闻名称:SQLServer数据库DataRelation的应用示例详解
文章转载:http://www.zyruijie.cn/qtweb/news24/5424.html

网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联