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. 关于css中使用ul li的一些体会

    参考网址:http://hi.baidu.com/july_leo/item/5237cd612070ae2668105b40 如何修改ul li的显示 ----------------------- ...

  2. 支付宝“订单交易失败 ALI64” 报错的原因

    移动快捷支付,往往需要集成支付宝的sdk,集成的过程相对简单,只要按照支付宝的文档,进行操作一般不会出问题. 下面主要说明一下,集成sdk后报 "订单交易失败 请稍后再试(ALI64)&qu ...

  3. C#复制数据库,将数据库数据转到还有一个数据库

    本文章以一个表为例,要转多个表则可将DataSet关联多个表.以下给出完整代码.包含引用以及main函数与复制函数. 要说明的是,必须先用Sql语句复制表结构,才干顺利的使用下面代码复制数据. usi ...

  4. java中文乱码解决之道(一)—–认识字符集

    原文出处:http://cmsblogs.com/?p=1395 沉寂了许久(大概有三个多月了吧),LZ“按捺不住”开始写博了! java编码中的中文问题是一个老生常谈的问题了,每次遇到中文乱码LZ要 ...

  5. 随滚动条滚动的居中div

    <!-- <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www ...

  6. 移动前端不得不了解的HTML5 head 头标签(2016最新版)

    小编推荐:掘金是一个高质量的技术社区,从 ECMAScript 6 到 Vue.js,性能优化到开源类库,让你不错过前端开发的每一个技术干货.各大应用市场搜索「掘金」即可下载APP,技术干货尽在掌握. ...

  7. TCP应用编程--套接字C#实现

     套接字之间的连接过程可以分为三个步骤: 1.服务器监听 2.客户端请求 3.连接确认 Ø服务器监听:是指服务器套接字并不定位具体的客户端套接字,而 是处于等待连接的状态,实时监控网络状态. Ø客户端 ...

  8. EC读书笔记系列之3:条款5、条款6、条款7

    条款5:了解C++默默编写并调用哪些函数 记住: ★编译器可以(仅仅是可以,并非必须,仅当程序中有这样的用法时才会这么做!!!)暗自为class创建default构造函数,copy构造函数,copy ...

  9. leetcode Binary Tree Paths python

    # Definition for a binary tree node. # class TreeNode(object): # def __init__(self, x): # self.val = ...

  10. MySQL之外键约束

    MySQL之外键约束 MySQL有两种常用的引擎类型:MyISAM和InnoDB.目前只有InnoDB引擎类型支持外键约束.InnoDB中外键约束定义的语法如下: [CONSTRAINT [symbo ...