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;
做人不要急进.
在
数据集分类(概念性的东西,大家也要有一定的了解)
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;
做人不要急进.
相关文章推荐
- 你必须深入了解:网站信息架构。
- 深入了解HBASE架构
- 深入了解jQuery之整体架构
- 带你逐步深入了解SSM框架——淘淘商城项目之系统架构和Nginx服务器介绍
- 深入了解CPU两大架构ARM与X86
- 深入了解HBASE架构(转)
- 第三十讲 深入了解DataSet
- 深入了解DataSet
- 34:ASP.NET复习系列- ADO.NET提高-深入了解DataSet
- 深入了解jQuery之整体架构
- 深入了解OpenOffice.org(二)-- OpenOffice.org技术架构
- 黑马训练营-深入了解DataSet
- 《深入了解mybatis原则》 MyBatis架构设计和案例研究
- 深入了解装箱和拆箱
- 大型WEB网站架构深入分析
- 立刻执行函数深入了解
- 深入了解802.11n无线标准(2)
- 《深入理解mybatis原理》 MyBatis的架构设计以及实例分析
- 深入了解css的行高Line Height属性
- 深入了解区块链之六:比特币区块链