HOW TO:使用 Visual C# .NET 将 ADO.NET 数据集存留为 XML (From MSDN)

本文的发布号曾为 CHS309183
有关本文的 Microsoft Visual Basic .NET 版本,请参见 308064
有关本文的 Microsoft Visual C++ .NET 版本,请参见 309184

本文引用下面的 Microsoft .NET 框架类库名称空间:
  • System.Data.OleDb
  • System.IO

本任务的内容

概要

本文演示如何将 ADO.NET DataSet 对象存留为可扩展标记语言 (XML)。

返回页首

要求

下面的列表列出了推荐使用的硬件、软件、网络结构以及所需的 Service Pack:
  • Microsoft Windows 2000 Professional、Windows 2000 Server、Windows 2000 Advanced Server 或 Windows NT 4.0 Server
  • Microsoft Visual Studio .NET
本文假定您熟悉下列主题:
  • Visual Studio .NET
  • ADO.NET 基础和语法
  • XML 基础
返回页首

技术说明

您可以使用 WriteXml 方法写入 DataSet 对象的 XML 架构和数据。XML 数据可以写入文件、 Stream 类、 XmlWriter 类,或写入 TextWriter 类。可以根据您的需要使用 WriteXml 的两组重载方法中的一组。第一组四个重载方法只有一个参数,第二组四个重载方法除了上述参数外还有一个参数 ( XmlWriteMode)。本节讲述了这些方法中的每一个方法。

如要将 DataSet 的当前架构和数据写入指定的文件,请使用下面的代码:
void DataSet.WriteXml(string fileName)
如要写入 DataSet 的当前架构和数据,请使用指定的 System.IO.TextWriter 类。 TextWriter 类的目的是进行字符输出。
void DataSet.WriteXml(System.IO.TextWriter writer)
如要写入 DataSet 的当前架构和数据,请使用指定的 System.IO.StreamStream 类是为字节输入和输出设计的。
void DataSet.WriteXml(System.IO.Stream stream)
如要将 DataSet 的当前架构和数据写入指定的 System.Xml.XmlWriter,请使用下面的代码。这为生成包含 XML 数据的数据流或文件提供了一种快速、无缓存而且只向前的方法,使其符合 World Wide Web 联合会 (W3C) XML 1.0 规范及 XML 规范中的名称空间。
void DataSet.WriteXml(Sytem.Xml.XmlWriter writer)
System.Data.XmlWriteMode 枚举指定如何写入 DataSet 的 XML 数据和架构。 XmlWriteMode 包含下面的选项:
  • DiffGram:将整个 DataSet 写为一个 DiffGram。
  • IgnoreSchema:将 DataSet 的当前内容写为 XML 数据,不需要"XML 架构定义语言"(XSD) 架构。
  • WriteSchema:将 DataSet 的当前内容写为 XML 数据,使用相关结构作为内联 XSD 架构。
返回页首

创建项目和添加代码

以下示例从罗斯文 (Northwind) 数据库中的顾客表创建一个 DataSet,并使用 WriteXml 方法将 DataSet 存留为 XML。本示例演示如何使用 WriteXml 的两个常用重载版本。有关其他示例,请参阅 MSDN 上有关此方法的各个重载主题。
  1. 启动 Microsoft Visual Studio .NET。
  2. 在 Visual C# .NET 中新建一个"Windows 应用程序"项目。
  3. 确保您的项目包含一个对 System.Data 名称空间的引用,如果未包含,请添加一个对此名称空间的引用。
  4. 将两个 Button 控件放到 Form1 上。将第一个按钮的 Name 属性更改为 btnWriter,将 Text 属性更改为 Writer
    将第二个按钮的 Name 属性更改为 btnFile ,将 Text 属性更改为 File
  5. System System.Data 名称空间使用 using 语句,这样,以后就不需要在代码中限定这些名称空间中的声明了。
    using System;
    using System.Data;
    using System.Data.SqlClient;
  6. 将以下代码复制并粘贴到两个按钮的事件处理程序中:
    private void btnWriter_Click(object sender, System.EventArgs e) {
    
    string myConnectionString = "User ID=login;password=password;Initial Catalog=Northwind;
    Data Source=servername";
    string mySelectQuery = "Select * From Customers";
    			
    System.IO.FileStream myFileStream = new System.IO.FileStream
    ("c://mySchema.xml", System.IO.FileMode.Create);
    System.Xml.XmlTextWriter MyXmlTextWriter = new System.Xml.XmlTextWriter
    (myFileStream, System.Text.Encoding.Unicode);
    try{
    
    SqlConnection con = new SqlConnection(myConnectionString);
    SqlDataAdapter daCust = new SqlDataAdapter(mySelectQuery, con);
    DataSet ds = new DataSet();
    daCust.Fill(ds, "Cust");
    
    //Write the XML along with the inline schema (default).
    ds.WriteXml(MyXmlTextWriter, XmlWriteMode.WriteSchema);
    //Write the XML only.
    //ds.WriteXml(MyXmlTextWriter, XmlWriteMode.IgnoreSchema);
    //Write the XML as a DiffGram.
    //ds.WriteXml(MyXmlTextWriter, XmlWriteMode.DiffGram);
    MessageBox.Show("Save complete");
      }
    catch (System.Exception ex) {
     
    MessageBox.Show(ex.ToString());
      }
    
    finally {
     
    MyXmlTextWriter.Close();
    myFileStream.Close();
      }
    }
     
    private void btnFile_Click(object sender, System.EventArgs e) {
     
    string myConnectionString = "User ID=login;password=password;Initial Catalog=Northwind;
    Data Source=servername";
    string mySelectQuery = "Select * From Customers";
     
    try{
     
    SqlConnection con = new SqlConnection(myConnectionString);
    SqlDataAdapter daCust = new SqlDataAdapter(mySelectQuery, con);
    DataSet ds = new DataSet();
    daCust.Fill(ds, "Cust");
    
    	//Write the XML along with the inline schema (default).
    	ds.WriteXml("c://mySchema.xml", XmlWriteMode.WriteSchema);
    	//Write the XML only.
    	//ds.WriteXml("c://mySchema.xml", XmlWriteMode.IgnoreSchema);
    	//Write the XML as a DiffGram.
    	//ds.WriteXml("c://mySchema.xml", XmlWriteMode.DiffGram);
    	MessageBox.Show("Save complete");
       }
     
    catch (System.Exception ex) {
    	MessageBox.Show(ex.ToString());
       }
    }
  7. 根据您的环境相应地修改连接字符串 ( myConnectionString ) 和 XML 文件路径 (myXMLfile)。
  8. 保存项目。
  9. 调试菜单上,单击启动,运行您的项目。
  10. 单击任一按钮将数据存留到文件。
  11. 打开您的浏览器,然后打开 XML 文件。注意,DataSet 中的数据已成功存留为基于您指定的 XmlWriteMode 的 XML 格式。
返回页首

备注

  • 如果只需写入 XML 架构,您可以使用 WriteXmlSchema 方法。
  • 若只需得到 DataSet 中数据的 XML 表示,而不用将其存留到流或文件,您可以使用 GetXml 方法。
返回页首

参考

有关其他信息,请单击下列文章编号,查看 Microsoft 知识库中的文章:

262450 HOWTO: A C++ Sample of ADO Recordset XML Persistence(HOW TO:一个 ADO Recordset XML 持久性的 C++ 示例)

311566 HOW TO:使用 Visual C# .NET 将 XML 数据读入数据集中

有关 ADO.NET 对象和语法的更多信息,请参见 Microsoft .NET 框架软件开发工具包 (SDK) 文档中的以下主题:

使用 ADO.NET 访问数据
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpguide/html/cpconaccessingdatawithadonet.asp

返回页首

这篇文章中的信息适用于:

  • Microsoft ADO.NET(随 .NET 框架一起提供)
  • Microsoft Visual C# .NET (2002)
最近更新:2002-6-17 (1.0)
关键字kbDSupport kbGrpDSMDAC kbGrpDSVBDB kbhowto kbHOWTOmaster kbIO kbOLEDB kbSystemData KB309183
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值