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

Ватсон Карли

Шрифт:

</xsd:element>

 </xsd:schema>

 <products>

<ProductID>1</ProductID>

<ProductName>Chai</ProductName>

<SupplierID>1</SupplierID>

<CategoryID>1</CategoryID>

<QuantityPerUnit>10 boxes x 20 bags</QuantityPerUnit>

<UnitPrice>18</UnitPrice>

<UnitsInStock>39</UnitsInStock>

<UnitsOnOrder>0</UnitsOnOrder>

<ReorderLevel>10</ReorderLevel>

<Discontinued>false</Discontinued>

 </products>

 <products>

<ProductID>2</ProductID>

<ProductName>Chang</ProductName>

<SupplierID>1</SupplierID>

<CategoryID>1</CategoryID>

<QuantityPerUnit>24 - 12 oz bottles</QuantityPerUnit>

<Unitprice>19</UnitPrice>

<UnitsInStock>17</UnitsInStock>

<UnitsOnOrder>40</UnitsOnOrder>

<ReorderLevel>25</ReorderLevel>

<Discontinued>false</Discontinued>

 </products>

</XMLProducts>

Показаны только два первых продукта. Реальный файл XML будет содержать все продукты из таблицы

Products
базы данных
Northwind
.

Это выглядит достаточно просто для одной таблицы, но что будет для реляционных данных, таких как несколько

DataTables
и
Relations
в
DataSet
? Все по-прежнему работает таким же образом. Внесем следующие изменения в коде (эту версию можно найти в
ADOSample3
):

private void button1_Click(object sender, System.EventArgs e) {

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

 DataSet ds=new DataSet("XMLProducts");

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

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

 //проверьте, что строка соединения соответствует конфигурации сервера

 SqlConnection conn=

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

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

 SqlDataAdapter daSup=new SqlDataAdapter("select * from suppliers", conn);

 //Заполнить DataSet из обоих SqlAdapters

 daProd.Fill(ds, "products");

 daSup.Fill(ds, "suppliers");

 //Добавить отношение

 ds.Relations.Add(ds.Tables["suppliers"].Columns["SupplierId"],

ds.Tables["products"].Columns["SupplierId"]);

 //Записать Xml в файл, чтобы можно было просмотреть его позже

 ds.WriteXml("..\\..\\..\\SuppProd.xml", XmlWriteMode.WriteSchema);

 //загрузить данные в таблицу

 dataGrid1.DataSource=ds;

 dataGrid1.DataMember="suppliers";

 //создать XmlDataDocument

 doc=new XmlDataDocument(ds);

 //Выбрать элементы productname и загрузить их в таблицу

 XmlNodeList nodeLst=doc.SelectNodes("//ProductName");

 foreach(XmlNode nd in nodeLst) listBox1.Items.Add(nd.InnerXml);

}

В этом примере создаются два объекта

DataTables
в
DataSet
из
XMLProducts
:
Products
и
Suppliers
. Отношение состоит в том, что
Suppliers
(Поставщики) поставляют
Products
(Продукты). Мы создаем новое отношение на столбце
SupplierId
в обоих таблицах. Вот как выглядит
DataSet
:

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

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

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

  • Моя полка

Контакты

  • chitat.ebooker@gmail.com

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