DataSet深入了解------DataSet架构

本文主要探讨ASP.NET开发中至关重要的DataSet,重点在于其架构。包括类型化数据集和非类型化数据集的详细讲解,类型化数据集允许直接通过名称引用表和列,具备智能感知类型的功能,而非类型化数据集则需要通过Tables集合引用。数据集作为内存中的临时数据库,对于理解ASP.NET应用程序的运作至关重要。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

ASP.NET应用程序的开发过程中,DataSet可以说是非常重要的一个核心.掌握它自然而然成了学好ASP.NET的必修课.在这里主要向大家介绍DataSet的架构.

    在

 

数据集分类(概念性的东西,大家也要有一定的了解)

1.类型化数据集

       结构体系:类型化数据集这样一种数据集,它先从dataset类派生,然后使用XML架构文件(.xsd文件)中的信息生成新类.架构中的信息(/列等)被作为一组第一类对象和属性生成并编译为此新数据集类.

       功能:可以直接通过名称引用表和列.

       类型检测:VS.NET中可以智能感知元素的类型

2.非类型化数据集(我们通常使用的就是这一种了)

       结构体系:非类型化数据集没有相应的内置架构.与类型化数据集一样,非类型化数据集也包含表/列等,等它们只作为集合公开.

       功能:需要通过Tables集合引用列

       类型检测:不能感知

 

数据集是内存中的关键数据库

(代码实例)  

 

//添加表

protected void btnCreate_Click(object sender, System.EventArgs e)

{

DataSet ds 
= new DataSet("myDS");//创建数据集

DataTable dtFahter 
= new DataTable("father");//创建数据表

DataTable dtChlid 
= new DataTable("child");

ds.Tables.Add(dtFather);
//把数据表添加到数据集中

ds.Tables.Add(dtChild);

Session[
"ds"= ds;

}


//添加列

protected void btnAddColumn_Click(object sender, System.EventArgs e)

{

      DataSet ds 
= (DataSet)Session["ds"];

      ds.Tables[
"father"].Columns.Add("fatherID",typeof(int));

      ds.Tables[
"father"].Columns.Add("fatherValue",typeof(string));

      ds.Tables[
"child"].Columns.Add("fahterLink",typeof(int));

      
//修改表头

      ds.Tables[
"father"].Columns["fatherID"].Caption = "主ID";

      Session[
"ds"= ds;

      Bind();
//绑定数据

}


//添加行与行值

protected void btnAddRow_Click(object sender, System.EventArgs e)

{

      
try

      
{

           DataSet ds 
= (DataSet)Session["ds"];

           
//为fatherr表添加行

           DataRow dr 
= ds.Tables["father"].NewRow();

           dr[
"fatherID"= 1;

           dr[
"fatherValue"= "One";

           ds.Tables[
"father"].Rows.Add(dr);

           
//为child表添加行

           ………..

           Session[
"ds"= ds;

           Bind();
//绑定数据

      }


      
catch(Exception ee)

      
{

           Response.Write(ee.Message);

      }


}


//添加唯一键

protected void btnAddUnqi_Click(object sender, System.EventArgs e)

{

      DataSet ds 
= (DataSet)Session["ds"];

System.Data.UniqueConstraint uc 
= new UniqueConstraint("unqi",ds.Tables["father"].Columns["fatherID"]);

      ds.Tables[
"father"].Constraints.Add(uc);

      Session[
"ds"= ds;

}


//添加外键

protected void btnAddForeign_Click(object sender, System.EventArgs e)

{

      DataSet ds 
= (DataSet)Session["ds"];

      System.Data.ForeignKeyConstraint fc 
= new ForeignKeyConstraint("fc",ds.Tables["father"].Columns["fatherID"],ds.Tables["child"].Columns["fathterLink"]);

      dsUntyped.Tables[
"child"].Constraints.Add(fc); //为child表添加fc外键

      Session[
"ds"= ds;

}


//从DataSet中取值

object obj = ds.Tables[nIndexTb].Rows[nIndexRow][nIndexCol];

tbResult.Text 
= obj.ToString();

//赋值给DataSet中的表

ds.Tables[nIndexTb].Rows[nIndexRow][nIndexCol] 
= tbResult.Text;

 

做人不要急进.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值