let it be
行到水穷处 坐看云起时
 ADO.NET在DataSet中提供对XML的广泛支持.下面是使用XML和ADO.NET的一些技巧信息。
 I.DataSet和XML

        DataSet和XML的完美整合,可以使你完成以下事情:

            ①从XSD计划中载入一个DataSet的计划或相关结构;

            下面的例子说明一个XSD文件的结构,其中MyDataSet就是我们的DataSet元素,它下面包含一个customers复合类型元素,有了它我们就可以映射创建一个这样的表:Customers (CustomerID,CompanyName,Phone),同时也定义我们的DataSet的计划或者结构:

<xs:schema id="SomeID"

             xmlns=""

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

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

    <xs:element name="MyDataSet" msdata:IsDataSet="true">

      <xs:complexType>

        <xs:choice maxOccurs="unbounded">

          <xs:element name="customers" >

            <xs:complexType >

              <xs:sequence>

                <xs:element name="CustomerID" type="xs:integer"

                             minOccurs="0" />

                <xs:element name="CompanyName" type="xs:string"

                             minOccurs="0" />

                <xs:element name="Phone" type="xs:string" />

              </xs:sequence>

            </xs:complexType>

           </xs:element>

        </xs:choice>

      </xs:complexType>

    </xs:element>

  </xs:schema>

            ②从XML文件中载入一个DataSet的内容;

            要从XML文件填充DataSet的内容,请使用DataSet对象的ReadXml方法。下面的例子说明如何从一个XML文件读取数据到一个DataSet:
‘C#

DataSet myDS = new DataSet();

myDS.ReadXml("input.xml", XmlReadMode.ReadSchema);

            ③当没有提供计划时从一个XML文件的内容中推断一个DataSet的计划;

            要从一个XML文件载入DataSet的计划信息,你可以使用DataSet对象的ReadXmlSchema方法。如果没有提供计划,你还可以使用InferXmlSchema从XML文件推断DataSet的计划,下面的例子介绍如何通过InferXmlSchema从一个XML文件推断出DataSet的计划:

‘C#

DataSet myDS = new DataSet();

myDS.InferXmlSchema("input_od.xml", new string[] "urn:schemas-microsoft-com:officedata");

            ④象XSD格式计划一样写一个DataSet的计划;

            下面的例子展示如何通过ReadXmlSchema从一个XSD文件载入DataSet的计划:

‘C#

DataSet myDS = new DataSet();

myDS.ReadXmlSchema("schema.xsd");

            ⑤象XML格式文件一样读写一个DataSet的内容。

            利用DiffGrams从DataSet中读写内容,下面的例子显示在提交更改之前更新表中一行数据的结果,其中CustomerID为ALFKI的那一行数据被修改但是还没有更新:

<diffgr:diffgram xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" xmlns:diffgr="urn:schemas-microsoft-com:xml-diffgram-v1">

  <CustomerDataSet>

    <Customers diffgr:id="Customers1" msdata:rowOrder="0" diffgr:hasChanges="modified">

      <CustomerID>ALFKI</CustomerID>

      <CompanyName>New Company</CompanyName>

    </Customers>

    <Customers diffgr:id="Customers2" msdata:rowOrder="1" diffgram:hasErrors="true">

      <CustomerID>ANATR</CustomerID>

      <CompanyName>Ana Trujillo Emparedados y helados</CompanyName>

    </Customers>

    <Customers diffgr:id="Customers3" msdata:rowOrder="2">

      <CustomerID>ANTON</CustomerID>

      <CompanyName>Antonio Moreno Taquerí­a</CompanyName>

    </Customers>

    <Customers diffgr:id="Customers4" msdata:rowOrder="3">

      <CustomerID>AROUT</CustomerID>

      <CompanyName>Around the Horn</CompanyName>

    </Customers>

  </CustomerDataSet>

  <diffgr:before>

    <Customers diffgr:id="Customers1" msdata:rowOrder="0">

      <CustomerID>ALFKI</CustomerID>

      <CompanyName>Alfreds Futterkiste</CompanyName>

    </Customers>

  </diffgr:before>

  <diffgr:errors>

    <Customers diffgr:id="Customers2" diffgr:Error="An optimistic concurrency violation has occurred for this row."/>

  </diffgr:errors>

</diffgr:diffgram>



   
posted on 2007-06-09 10:57  流浪浪  阅读(970)  评论(0)    收藏  举报