Читаем Язык программирования С# 2005 и платформа .NET 2.0. полностью

Тип DataTable предлагает еще целый ряд методов, кроме тех, что уже были нами рассмотрены. Подобно DataSet, тип DataTable поддерживает, например, методы AcceptChanges(), GetChanges(), Сору() и ReadXml()/WriteXml(). В .NET 2.0 тип DataTable поддерживают также метод CreateDataReader(). Этот метод позволяет получить данные DataTable, используя схему, соответствующую схеме навигации объекта чтения данных (только вперед и только для чтения). Для примера создайте новую вспомогательную функцию PrintTable(), реализованную следующим образом.

private static void PrintTable(DataTable dt) {

 Console.WriteLine("\n***** Строки в DataTable *****");

 // Получение нового для .NET 2.0 типа DataTableReader.

 DataTableReader dtReader = dt.CreateDataReader();

 // DataTableReader работает подобно DataReader.

 while (dtReader.Read()) {

  for (int i = 0; i ‹ dtReader.FleldCount; i++) {

   Console.Write("{0} = {1} ", dtReader.GetName(i), dtReader.GetValue(i).ToString().Trim());

  }

  Console.WriteLine();

 }

 dtReader.Close();

}

Обратите внимание на то, что DataTableReader работает аналогично объекту чтения данных поставщика данных. Использование DataTableReader может оказаться идеальным вариантом, когда нужно быстро прочитать данные DataTable без просмотра внутренних коллекций строк и столбцов. Для вызова метода нужно просто указать соответствующую таблицу.

static void Main(string[] args) {

 …

 // Печать DataTable с помощью 'объекта чтения таблиц' .

 PrintTable(carsInventoryDS.Tables["Inventory"]);

}

<p>Сохранение DataSet (и DataTable) в формате XML</p>

В завершение рассмотрения текущего примера напомним, что как DataSet, так и DataTable предлагают поддержку методов WriteXml() и ReadXml(). Метод WriteXml() позволяет сохранить содержимое объекта в локальном файле (или вообще в любом типе System.IO.Stream) в виде XML-документа. Метод ReadXml() позволяет прочитать информацию о состоянии DataSet (или DataTable) из имеющегося XML-документа. Кроме того, как DataSet, так и DataTable поддерживают WriteXmlSchema() и ReadXmlSchema() для сохранения и загрузки файлов *.xsd. Чтобы это проверить, добавьте в метод Main() следующий набор операторов.

static void Main(string [] args) {

 …

 // Сохранение DataSet в виде XML.

 carsInventoryDS.WriteXml("carsDataSet.xml");

 carsInventoryDS.WriteXmlSchema("carsDataSet.xsd");

 // Очистка DataSet и вывод содержимого (должно быть пустым).

 carsInventoryDS.Сlear();

 PrintDataSet(carsInventoryDS);

 // Загрузка и печать DataSet.

 carsInventoryDS.ReadXml("carsDataSet.xml");

 PrintDataSet(carsInventoryDS);

}

Если открыть сохраненный файл carsDataSet.xml, вы увидите, что в нем представлены все столбцы таблицы, закодированные в виде XML-элементов.

‹?xml version="1.0" standalone="yes"?›

‹Car_x0020_Inventory›

 ‹Inventory›

  ‹CarID›0‹/CarID›

  ‹Make›BMW‹/Make›

  ‹Color›черный‹/Color

  ‹PetName›Hamlet‹/PetName›

 ‹/Inventory›

 ‹Inventory›

  ‹CarID›1‹/CarID›

  ‹Make›Saab‹/Make›

  ‹Color›красный‹/Color›

  ‹PetName›Sea Brеeze‹/PеtName›

 ‹/Inventory›

‹/Car_x0020_Inventory›

Наконец, напомним, что тип DataColumn поддерживает свойство ColumnMapping, которое можно использовать для управления представлением столбца в XML-формате. Значением, устанавливаемым для этого свойства по умолчанию, является MappingType.Element. Однако можно потребовать, чтобы столбец CarID представлялся XML-атрибутом, как это сделано ниже в обновленной версии объекта carIDColumn для DataColumn.

Static void Main(string[] args) {

 …

 DataColumn carIDColumn = new DataColumn("CarID", typeof(int));

 …

 carIDColumn.ColumnMapping = MappingType.Attribute;

}

Тогда вы обнаружите следующий XML-код.

Перейти на страницу:

Похожие книги

1С: Бухгалтерия 8 с нуля
1С: Бухгалтерия 8 с нуля

Книга содержит полное описание приемов и методов работы с программой 1С:Бухгалтерия 8. Рассматривается автоматизация всех основных участков бухгалтерии: учет наличных и безналичных денежных средств, основных средств и НМА, прихода и расхода товарно-материальных ценностей, зарплаты, производства. Описано, как вводить исходные данные, заполнять справочники и каталоги, работать с первичными документами, проводить их по учету, формировать разнообразные отчеты, выводить данные на печать, настраивать программу и использовать ее сервисные функции. Каждый урок содержит подробное описание рассматриваемой темы с детальным разбором и иллюстрированием всех этапов.Для широкого круга пользователей.

Алексей Анатольевич Гладкий

Программирование, программы, базы данных / Программное обеспечение / Бухучет и аудит / Финансы и бизнес / Книги по IT / Словари и Энциклопедии
1С: Управление торговлей 8.2
1С: Управление торговлей 8.2

Современные торговые предприятия предлагают своим клиентам широчайший ассортимент товаров, который исчисляется тысячами и десятками тысяч наименований. Причем многие позиции могут реализовываться на разных условиях: предоплата, отсрочка платежи, скидка, наценка, объем партии, и т.д. Клиенты зачастую делятся на категории – VIP-клиент, обычный клиент, постоянный клиент, мелкооптовый клиент, и т.д. Товарные позиции могут комплектоваться и разукомплектовываться, многие товары подлежат обязательной сертификации и гигиеническим исследованиям, некондиционные позиции необходимо списывать, на складах периодически должна проводиться инвентаризация, каждая компания должна иметь свою маркетинговую политику и т.д., вообщем – современное торговое предприятие представляет живой организм, находящийся в постоянном движении.Очевидно, что вся эта кипучая деятельность требует автоматизации. Для решения этой задачи существуют специальные программные средства, и в этой книге мы познакомим вам с самым популярным продуктом, предназначенным для автоматизации деятельности торгового предприятия – «1С Управление торговлей», которое реализовано на новейшей технологической платформе версии 1С 8.2.

Алексей Анатольевич Гладкий

Финансы / Программирование, программы, базы данных