第七讲 ASP.NET应用:DataSet和XML
摘要
.数据集概述
.XML概述
.XML的使用
.数据集和XML使用技巧
*数据集概述
1、数据集是一种代表关系数据的内存驻留结构
2、数据集分类
-类型化数据集
-非类型化数据集
3、类型化数据集和非类型化数据集的区别
类型化数据集这样一种数据集,它先从基DataSet类派生,然后使用XML架构文件(.xsd文件)中的信息生成新类。架构中的信息
(表、列等)被作为一组第一类对象和属性生成并编译为此新数据集类。
可以直接通过名称引用表和列
在VS.NET中可以智能感知元素的类型
非类型化数据集没有相应的内置架构。与类型化数据集一样,非类型化数据集也包含表、列等,但它们只作为集合公开。
需要通过Tables集合引用列
不能感知
4、数据集的构成
DataTableCollection
DataTable(Columns(DataCloums),Rows(DataRow),Constraints(Constraint))
DataRelationCollection
(DataRelation)
数据集常用操作
*创建数据集和数据表
DataSet dsUntyped = new DataSet("myDS");//创建数据集
DataTable dtMaster = new DataTable("Master");//创建数据表
DataTable dtChild = new DataTable("Child");
dsUntyped.Tables.Add(dtMaster);//把数据表添加到数据集中
dsUntyped.Tables.Add(dtChild);
Session["ds"] = dsUntyped;
*添加列
DataSet dsUntyped = (DataSet)Session["ds"];
dsUntyped.Tables["Master"].Columns.Add("MasterID",typeof(int));
dsUntyped.Tables["Master"].Columns.Add("MasterValue",typeof(string));
dsUntyped.Tables["Child"].Columns.Add("MasterLink",typeof(int));
dsUntyped.Tables["Child"].Columns.Add("ChildID",typeof(int));
dsUntyped.Tables["Child"].Columns .Add("ChildValue",typeof(string));
//修改表头
dsUntyped.Tables["Master"].Columns["MasterID"].Caption = "主ID";
dsUntyped.Tables["Master"].Columns["MasterValue"].Caption = "值";
Session["ds"] = dsUntyped;
*添加行
try
{
DataSet dsUntyped = (DataSet)Session["ds"];
//为Master表添加两行
DataRow dr = dsUntyped.Tables["Master"].NewRow();
dr["MasterID"] = 1;
dr["MasterValue"] = "One";
dsUntyped.Tables["Master"].Rows.Add(dr);
dr = dsUntyped.Tables["Master"].NewRow();
dr["MasterID"] = 2;
dr["MasterValue"] = "Two";
dsUntyped.Tables["Master"].Rows.Add(dr);
//为child表添加1行
dr = dsUntyped.Tables["Child"].NewRow();
dr["MasterLink"] = 1;
dr["ChildID"] = 1;
dr["ChildValue"] = "ChildOne";
dsUntyped.Tables["Child"].Rows.Add(dr);
Session["ds"] = dsUntyped;
Bind();
}
catch(Exception ee)
{
Response.Write(ee.Message);
}
*添加唯一键
DataSet dsUntyped = (DataSet)Session["ds"];
System.Data.UniqueConstraint uc = new UniqueConstraint("unqi",dsUntyped.Tables["Master"].Columns["MasterID"]);
dsUntyped.Tables["Master"].Constraints.Add(uc);
Session["ds"] = dsUntyped;
*添加外键
DataSet dsUntyped = (DataSet)Session["ds"];
System.Data.ForeignKeyConstraint fc = new ForeignKeyConstraint("fc",dsUntyped.Tables["Master"].Columns["MasterID"],dsUntyped.Tables["Child"].Columns["MasterLink"]);
dsUntyped.Tables["Child"].Constraints.Add(fc);
Session["ds"] = dsUntyped;
*修改MasterID
dsUntyped.Tables["Master"].Rows[0]["MasterID"] = 4;
*求值
DataSet dsUntyped = (DataSet)Session["ds"];
int nIndexTb = int.Parse(ddlTable.SelectedItem.Value);
int nIndexRow = int.Parse(tbRow.Text);
int nIndexCol = int.Parse(tbCol.Text);
object obj = dsUntyped.Tables[nIndexTb].Rows[nIndexRow][nIndexCol];
tbResult.Text = obj.ToString();
*赋值
DataSet dsUntyped = (DataSet)Session["ds"];
int nIndexTb = int.Parse(ddlTable.SelectedItem.Value);
int nIndexRow = int.Parse(tbRow.Text);
int nIndexCol = int.Parse(tbCol.Text);
dsUntyped.Tables[nIndexTb].Rows[nIndexRow][nIndexCol] = tbResult.Text;
Session["ds"] = dsUntyped;
Bind();
XML概述
1、什么是XML(eXtensible Markup language)
-XML是标记语言
-XML是可扩展的(eXtensible)标记语言。
XML并非象HTML那样,提供了一组事先已经定义好了的标记,而是提供了一个标准,利用这个标准,可以根据实际需要定义自己的新的标记语言,并为这个标记语言规定特有的一套标记。准确地说,XML是一种元标记语言,它允许程序开发人员根据它所提供的规则,制定各种各样的标记语言。
2、XML的优点
良好的可扩展性
内容与形式的分离
遵循严格的语法要求
便于不同系统之间信息的传输
具有较好的保值性
3、XML、数据库?
用XML文件存储数据,可减少额外的服务器的负荷。
只要使用文本编辑器,而不必使用复杂的数据库工具就可以编辑。
XML文件很容易备份,容易上传和下载。
XML还有一个更抽象的优点,即作为层次型的格式比关系型的更好。
所有的服务器都是支持XML文件的。
DataSet方法
DataSet.ReadXml(string strFileName);
DataSet.WriteXml(string strFileName);
*数据集和XML使用技巧
1、DataSet和字符串转换
DataSet StringToDataSet(string str)
{
System.IO.StringReader sr=new System.IO.StirngReader(strDsc);
DataSet dsC=new DataSet();
dsC.ReadXml(sr);
return dsC;
}
string DataSetToString(DataSet ds)
{
string str=ds.GetXml();
return str;
}
2、在C#中直接对XML文件里的数据进行修改,查询、添加、删除等操作
XmlDocument的使用