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;


做人不要急进.