第七讲 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的使用


XML学习资料http://www.w3school.com.cn/xml/

原文地址:https://www.cnblogs.com/iceberg2008/p/1414368.html