您的位置:首页 > 运维架构 > 网站架构

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

2007-03-19 16:00 288 查看
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;





 

做人不要急进.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息