Вход/Регистрация
C# для профессионалов. Том II
вернуться

Ватсон Карли

Шрифт:

 // создать множество данных (DataSet)

 DataSet ds=new DataSet("XMLProducts");

 // соединиться с базой данных northwind и

 //выбрать все строки из таблицы products

 //выполнить изменения в строке подключения с учетом имени пользователя и имени сервера

 SqlConnection conn=

new SqlConnection(@"server=GLYNNJ_CS\NetSDK;uid=sa;pwd=;database=northwind");

 SqlDataAdapter da=new SqlDataAdapter("select * from products", conn);

 // заполнить множество данных

 da.Fill(ds, "products");

 // загрузить данные в сетку

 dataGrid1.DataSource=ds;

 dataGrid1.DataMember="products";

 doc=new XmlDataDocument(ds);

 // извлечь все элементы продуктов

 XmlNodeList nodeLst=doc.GetElementsByTagName("ProductName");

 // загрузить их в окно списка

 // здесь используется цикл for

 for(int ctr=0; ctr<nodeLst.Count; ctr++) listBox1.Items.Add(nodeLst[ctr].InnerText);

}

Как можно видеть, код для загрузки

DataSet
в документ XML был упрощен. Вместо использования класса
XmlDocument
, используется класс
XmlDataDocument
. Этот класс был создан специально для использования данных с объектом
DataSet
.

XmlDataDocument
базируется на классе
XmlDocument
, поэтому он имеет всю функциональность класса
XmlDocument
. Одним из основных отличий является перегруженный конструктор для
XmlDataDocument
. Отметим строку кода, где создается экземпляр
XmlDataDocument
:

XmlDataDocument doc=new XmlDataDocument(ds);

Он передает в качестве параметра созданный объект

DataSet
,
ds
. Документ XML создается из множества данных, поэтому не требуется использование метода
Load
. Существует также свойство
DataSet
, которое может задаваться с помощью текущего свойства
DataSet
. Фактически, если создается новый объект
XmlDataDocument
без передачи
DataSet
в качестве параметра, то он содержит объект
DataSet
с именем
NewDataSet
, который не имеет
DataTables
в коллекции таблиц. Существует также свойство
DataSet
, которое можно установить после создания объекта на основе
XmlDataDocument
. Если после вызова
DataSet.Fill
добавляется следующая строка кода:

ds.WriteXml("с:\\test\\sample.xml" , XmlWriteMode, WriteSchema);

…создается следующий XML. Отметим, что мы включили в документ схему XSD. Если нежелательно, чтобы схема включалась в файл, то можно передать член перечисления

XmlWriteMode.IgnoreSchema
:

<?xml version="1.0" standalone="yes"?>

<XMLProducts>

 <xsd:schema id="XMLProducts" targetNamespace="" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">

<xsd:element name="XMLProducts" msdata:IsDataSet="true">

<xsd:complexType>

<xsd:choice maxOccurs="unbounded">

<xsd:element name="products">

<xsd:complexType>

<xsd:sequence>

<xsd:element name="ProductID" type="xsd:int" minOccurs="0" />

<xsd:element name="ProductName" type="xsd:string" minOccurs="0" />

<xsd:element name="SupplierID" type="xsd:int" minOccurs ="0" />

<xsd:element name="CategoryID" type="xsd:int" minOccurs="0" />

<xsd:element name="QuantityPerUnit" type="xsd:string" minOccurs="0" />

<xsd:element name="UnitPrice" type="xsd:decimal" minOccurs="0" />

<xsd:element name="UnitsInStock" type="xsd:short" minOccurs="0" />

<xsd:element name="UnitsOnOrder" type="xsd:short" minOccurs="0" />

<xsd:element name="ReorderLevel" type="xsd:short" minOccurs="0" />

<xsd:element name="Discontinued" type="xsd:boolean" minOccurs="0" />

</xsd:sequence>

</xsd:сomplexType>

</xsd:element>

</xsd:choice>

</xsd:complexType>

  • Читать дальше
  • 1
  • ...
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • ...

Ебукер (ebooker) – онлайн-библиотека на русском языке. Книги доступны онлайн, без утомительной регистрации. Огромный выбор и удобный дизайн, позволяющий читать без проблем. Добавляйте сайт в закладки! Все произведения загружаются пользователями: если считаете, что ваши авторские права нарушены – используйте форму обратной связи.

Полезные ссылки

  • Моя полка

Контакты

  • chitat.ebooker@gmail.com

Подпишитесь на рассылку: