ReadXml 提供了只将数据或同时将数据和架构从 XML 文档读入 DataSet 的方式(若要同时读数据和架构,请使用包括 mode 参数的 ReadXML 重载之一,并将其值设置为 ReadSchema)。ReadXmlSchema 方法仅读架构。

对于 WriteXml 和 WriteXmlSchema 方法也是如此。若要写入来自 DataSet 的 XML 数据或架构和数据两者,使用 WriteXml 方法。若要只写入架构,请使用 WriteXmlSchema 方法。

XML 数据可直接从文件、Stream 对象、XmlWriter 对象或 TextWriter 对象中读取。可以根据需要使用 ReadXml 的两组重载方法中的一组。第一组中的四个重载方法只取一个参数。第二组中的四个重载方法除了取第一组中的一个参数外另外多取了一个参数 (XmlReadMode)。

1、ReadXml 方法的重载形式

DataSet.ReadXml (Stream)           使用指定的 System.IO.Stream 将 XML 架构和数据读入 DataSet。

DataSet.ReadXml (String)            使用指定的文件将 XML 架构和数据读入 DataSet。

DataSet.ReadXml (TextReader)    使用指定的 System.IO.TextReader 将 XML 架构和数据读入 DataSet。

DataSet.ReadXml (XmlReader)     使用指定的 System.Xml.XmlReader 将 XML 架构和数据读入 DataSet。

DataSet.ReadXml (Stream, XmlReadMode)   使用指定的 System.IO.Stream 和 XmlReadMode 将 XML 架构和数据读入DataSet。

DataSet.ReadXml (String, XmlReadMode)     使用指定的文件和 XmlReadMode 将 XML 架构和数据读入 DataSet。

DataSet.ReadXml (TextReader, XmlReadMode)    使用指定的 System.IO.TextReader 和 XmlReadMode 将 XML 架构和数据读入DataSet。

DataSet.ReadXml (XmlReader, XmlReadMode)  使用指定的 System.Xml.XmlReader 和 XmlReadMode 将 XML 架构和数据读入DataSet。

2、ReadXml 方法的重载形式

WriteXml(Stream)    使用指定的 System.IO.Stream 为 DataSet 写当前数据。

WriteXml(TextWriter)   使用指定的 TextWriter 为 DataSet 写当前数据。

WriteXml(String)    将 DataSet 的当前数据写入指定的文件。

WriteXml(XmlWriter)    将 DataSet 的当前数据写入指定的 XmlWriter。

WriteXml(Stream, XmlWriteMode)   使用指定的 System.IO.Stream 和 XmlWriteMode 为 DataSet 写当前数据,还可以选择写架构。若要写架构,请将 mode 参数的值设置为 WriteSchema。

WriteXml(TextWriter, XmlWriteMode)  使用指定的 TextWriter 和 XmlWriteMode 为 DataSet 写当前数据,还可以选择写架构。若要写架构,请将 mode 参数的值设置为 WriteSchema。

WriteXml(String, XmlWriteMode)  使用指定的 XmlWriteMode 将 DataSet 的当前数据写入指定的文件,还可以选择将架构写入指定的文件。若要写架构,请将 mode 参数的值设置为 WriteSchema。

WriteXml(XmlWriter, XmlWriteMode)   使用指定的 XmlWriter 和 XmlWriteMode 为 DataSet 写当前数据,还可以选择写架构。若要写架构,请将 mode 参数的值设置为 WriteSchema。

3、注意点

(1)如果指定内联架构,则该内联架构用于在加载数据之前扩展现有的关系结构。如果存在任何冲突(例如,用不同的数据类型定义了同一个表中的同一列),将引发异常。

(2)如果未指定内联架构,则在必要时按照 XML 文档的结构通过推理扩展关系结构。如果不能通过推理扩展架构以公开所有数据,则将引发异常。

(3)如果 DataSet 的 XML 架构包含 targetNamespace,则可能无法读取数据,并且在调用 ReadXml 以加载 XML 中包含具有无限定命名空间的元素的DataSet 时,可能会发生异常。若要读取非限定元素,请按下例的演示,在 XML 架构中将 elementFormDefault 设置为“qualified”。

<xsd:schema id="MyDataSet"

elementFormDefault="qualified"

targetNamespace="http://www.tempuri.org/MyDataSet.xsd"

xmlns="http://www.tempuri.org/MyDataSet.xsd"

xmlns:xsd="http://www.w3.org/2001/XMLSchema"

xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">

</xsd:schema>

(4)如果 DataSet 的架构包含同一命名空间中同名但类型不同的元素,则当您尝试通过指定 XmlReadMode.ReadSchema 将该架构读入具有ReadXml 的 DataSet 时,将发生异常

4、实例:

(1)WriteXml()

using System;

using System.Collections.Generic;

using System.Text;

using System.Data.SqlClient;

using System.Data;

namespace sqlconnection1

{

class Program

{

private void SQLConnectionF(string source, string select)

{

//创建连接

SqlConnection con = new SqlConnection(source);

SqlDataAdapter adapt = new SqlDataAdapter(select, con);

try

{

con.Open();

Console.WriteLine("connection is successful!");

}

catch (Exception e)

{

Console.WriteLine("connection error is :{0}", e.ToString());

}

//创建DataSet

DataSet ds = new DataSet();

//将数据添加到DataSet中

adapt.Fill(ds, "mytest");

ds.WriteXml(@"e:\mytest.xml");

Console.ReadLine();

con.Close();

}

static void Main(string[] args)

{

string sou = "server=duanyf\\SQLEXPRESS;" + "Initial Catalog=master;" + "UID = sa;" + "Password = dyf123";

string sel = "SELECT name,number,low,high From dbo.spt_values";

Program sqlcon = new Program();

sqlcon.SQLConnectionF(sou, sel);

}

}

}

(2)ReadXml()

using System;

using System.Collections.Generic;

using System.Text;

using System.Data.SqlClient;

using System.Data;

namespace sqlconnection1

{

class Program

{

static void Main(string[] args)

{

DataSet dsxml = new DataSet();

dsxml.ReadXml(@"e:\mytest.xml");

Console.WriteLine("{0,-20} {1,-15}{2,-10}{3,-10}",dsxml.Tables[0].Columns[0],dsxml.Tables[0].Columns[1],

dsxml.Tables [0].Columns [2],dsxml .Tables[0].Columns[3]);

foreach (DataRow row in dsxml.Tables[0].Rows)

{

Console.WriteLine("{0,-20} {1,-15}{2,-10}{3,-10}",row[0],row[1],row[2],row[3]);

}

Console.ReadLine();

}

}

}

【转自】http://www.cnblogs.com/hulang/archive/2011/01/11/1932568.html

dataset 用法(3)的更多相关文章

  1. DataSet用法详细 转

    DataSet用法详细 转 DataSet用法详细 一.特点介绍 1.处理脱机数据,在多层应用程序中很有用. 2.可以在任何时候查看DataSet中任意行的内容,允许修改查询结果的方法. 3.处理分级 ...

  2. DataSet用法详细

    转自:http://www.cnblogs.com/zeroone/archive/2012/06/08/2541299.html DataSet用法详细 一.特点介绍 1.处理脱机数据,在多层应用程 ...

  3. dataset 用法(2)

    1.为DataTable添加列 (1)添加列 DataTable  tbl = ds.Tables.Add("User"); DataColumn col =tbl.Columns ...

  4. dataset 用法(1)

    DataSet是表和列结构在内存中的表示方式,DataSet支持多表.表间关系.数据约束等,和关系数据库的模型基本一致.(本质上是微型的数据库.包含一组DataTable对象和DataTable之间的 ...

  5. DATASET()用法

    DataSet是ADO.NET的中心概念.可以把DataSet当成内存中的数据库,DataSet是不依赖于数据库的独立数据集合.所谓独立,就是说,即使断开数据链路,或者关闭数据库,DataSet依然是 ...

  6. js 控制 class 类名(classList) 和 自定义属性(dataset)

    classList 用法: const div = document.querySelector('div') div.classList.add('myclass') // 添加类名 div.cla ...

  7. tensorflow学习笔记--dataset使用,创建自己的数据集

    数据读入需求 我们在训练模型参数时想要从训练数据集中一次取出一小批数据(比如50条.100条)做梯度下降,不断地分批取出数据直到损失函数基本不再减小并且在训练集上的正确率足够高,取出的n条数据还要是预 ...

  8. 【转】如何在TensorFlow中高效使用数据集

    本文主要记录tensorflow一个比较好用的API:Dataset,feed-dict 是向 TensorFlow 传递信息最慢的方式,应该尽量避免使用.向模型提供数据的正确方式是使用输入管道,这样 ...

  9. dataset 和DataTable的用法

    以下包含了这两种不同属性的用法: foreach (DataRow dr in dataset.Tables[0].Rows)            { if (i != 0 && l ...

随机推荐

  1. perl 对象 bless 引用

    [root@dr-mysql01 ~]# cat aa.pl use LWP::UserAgent; use Data::Dumper; my $ua = LWP::UserAgent->new ...

  2. 自动添加注释—VS2010宏的使用

    在敲代码的过程中类和函数都需要进行注释,但总是一遍一遍的复制粘贴觉得很是麻烦,终于找到了一个不错的解决方法:使用宏. 所谓宏,就是一些命令组织在一起,作为一个单独命令完成一个特定任务.在日常的办公环境 ...

  3. 自己主动下载源代码_并编译_打包_部署_重新启动服务的Shell脚本

    这里面Shell的各个操作含义,可參考我三年前的这篇文章:http://blog.csdn.net/jadyer/article/details/7960802 #!/bin/sh APP_NAME= ...

  4. c# 根据中文汉字获取到拼音

    public static String ConvertToPinyin(String str) { if (String.IsNullOrEmpty(str)) return String.Empt ...

  5. PSP个人软件开发工具

    (您的阅读是我的荣幸,如有不满之处请留言指正!) 尚未完善.....工作中 为开发人员提供一个PSP工具,简化时间记录工作:同时提供数据使用的工具,帮助开发人提高估算能力.   PSP个人软件开发工具 ...

  6. 《C++ Primer Plus 6th》读书笔记 - 第8章 函数探幽

    1. 摘录 默认参数指的是当函数调用中省略了实参时自动使用的一个值. 默认参数并非编程方面的重大突破,而只是提供了一种便捷的方式.使用默认参数,可以减少要定义的析构函数.方法以及方法重载的数量. 试图 ...

  7. QF——OC中的KVC,KVO

    KVC: (Key Value Coding) 键值编码 所谓KVC,其实就是不通过set和get方法访问对象属性,而是通过属性名字符串动态的去读取属性.KVC其实也是OC反射机制的一种运用. 之所以 ...

  8. CGI version1.1-第一章 介绍 (译)

    CGI version1.1-第一章 介绍 1.简介 1.1 用途 CGI 是为 HTTP服务器 与 CGI脚本 在 响应客户端请求分配职责, 客户请求由url,方法与关于传输协议的附属信息, CGI ...

  9. nginx-configure执行大致流程

    1,configure 命令行参数处理 2,初始化各种文件路径 3,分析源码结构 4,生成编译过程中所需路径 5,准备 .h,.err等编译所需文件 6,写入命令行参数 7,检测环境(系统,编译器,第 ...

  10. 看IT牛人博客的哲理

    潜意识追求复杂的东西 想着用C语言包揽所有的事情 对于不同问题,不同领域 各种技术和方案都有着自己最为优势的解决方法 对要解决的问题的领域的理解很重要