ADO.NET入门(6)
6.XML的延展支持功能
在ADO中,XML仅仅只是作为输入和输出格式.但是,在ADO.NET中,XML作为数据记录格式为你提供了一系列的方法,如: manipulating, reorganizing, sharing, and transferring. 任何你输入进到DataSet中的数据,不管是不是原创,都能够通过双面编程模型进行处理.
如同XML文档一样,DataSet 读取/书写数据和模式。数据和模式在HTTP中是可转移的,也可以在任一支持XML的平台上运行。相同的数据在不同的时间段通过不同的模式可以被执行。你利用ReadXmlSchema来书写模式。 XML模式包含了data set中tables 的名称,如同data set 中的relations 和 constraints一样。在调用ReadXmlData之前你应该完成这个步骤
以下代码示例是一个显示可更新数据表的最简单的 ASP.NET 页面。
<%@ Import Namespace="System.Data" %>
<%@ Import Namespace="System.IO" %>
<script runat="server" language="C#">
void Page_Load(Object source, EventArgs e)
{
DataSet data = new DataSet();
// Loads XML data and schema
StreamReader sr;
sr = new StreamReader(Server.MapPath("data.xml"));
data.ReadXml(sr);
sr.Close();
// Add a new record passed through the URL
if (Request.QueryString.Count >0)
{
DataTable dt = data.Tables[0];
DataRow dr = dt.NewRow();
dr["FirstName"] = Request.QueryString["First"];
dr["LastName"] = Request.QueryString["Last"];
dt.Rows.Add(dr);
dt.AcceptChanges();
StreamWriter sw;
sw = new StreamWriter(Server.MapPath("data.xml"));
data.WriteXml(sw);
sw.Close();
}
// Refreshes the UI (made of a grid)
grid.DataSource = data.Tables[0].DefaultView;
grid.DataBind();
}
</script>
如图 2 所示,您可以将新的行添加到表中。然而,它不涉及 SQL Server 或 Access 表。它只是一个 XML 文件,在处理它的代码中,没有使用 XML 节点或 XMLDOM 方法。您可以用相同的直观数据表接口来读取和更新 XML 记录。您的工作方式与在 ADO 中大致相同,但此处的模型更深入、更庞大,有更多的潜力供您去发掘。
Figure 2. Example of an updateable table
7.结论
Web 应用程序的成功改变了典型分布式系统的面貌。现在大多数分布式系统都是 n 层系统,这类系统对扩展性和互操作性的要求越来越高。因此,非连接数据处理和 XML 成为最佳实践,并为业界广为接受。
ADO.NET试图将一些现有的在.NET旗下最好的精华都统成为一体.对于数据访问的所有的编程模式就综合性的,并是非常强大的.也许该模式不能一一满足你的每个要求,但它朝模式设计方向跨出了一大步,不管如何,请记住ADO.NET只是一个测试版,而且只有有限的文档支持.
ADO程序员从该测试版中将会受益非浅,因为他们已经熟悉了关于ADO.NET的方方面面,包括关于abstraction的最高层次-- inspiring 模型. ADO.NET代码与现有的ADO代码并不兼容,但是功能却近似. 为完全发挥ADO.NET 的优势,与其只是简单的计算出最快的方式来放置代码,还不如实实在在的弄清楚ADO.NET它本身的要领.不管如何,.你所选择的NET编程模式-- Windows Forms, Web Forms, or Web Services,ADO.NET都会在数据存取方面帮你一把.