Чтение онлайн

на главную - закладки

Жанры

ЯЗЫК ПРОГРАММИРОВАНИЯ С# 2005 И ПЛАТФОРМА .NET 2.0. 3-е издание

Троелсен Эндрю

Шрифт:

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"]);

}

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

В завершение рассмотрения текущего примера напомним, что как 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-код.

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

‹Car_x0020_Inventory›

 ‹Inventory CarID="0"›

‹Make›BMW‹/Make›

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

‹PetName›Hamlet‹/PetName›

 ‹/Inventory›

 ‹Inventory CarID="1"›

‹Make›Saab‹/Make›

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

‹PetName›Sea Breeze‹/PetName›

 ‹/Inventory›

‹/Car_x0020_Inventory›

Исходный код. Проект SimpleDataSet размещен в подкаталоге, соответствующем главе 22.

Привязка DataTable к интерфейсу пользователя

Теперь, когда мы обсудили процесс взаимодействия с DataSets в общем, давайте рассмотрим соответствующий пример приложения Windows Forms. Нашей целью является построение формы, отображающей содержимое DataTable в рамках элемента управления DataGridView. На рис. 22.13 показано окно исходного пользовательского интерфейса проекта.

Рис. 22.13. Привязка DataTable к DataGridView

Замечание. Для представления реляционных баз данных в .NET 2.0 элемент управления DataGridView считается наиболее "предпочтительным", однако остается доступным и устаревший элемент управления .NET 1.x DataGrid.

Создайте новое приложение Windows Forms с именем CarDataTableViewer. Добавьте в форму элемент управления DataGridView (назвав его carInventoryGridView) и Label с подходящим описанием. Затем добавьте в проект новый C#-класс (с именем Car), определив его так, как показано ниже.

public class Car {

 // Здесь public используется для простоты.

 public string carPetName, carMake, carColor;

 public Car(string petName, string make, string color) {

 carPetName = petName;

 carColor = color;

 carMake = make;

 }

}

Теперь в рамках конструктора формы, заданного по умолчанию, наполните член-переменную List‹› множеством новых объектов Car.

public partial class MainForm: System.Windows.Forms.Form {

 // Наш список машин.

 private List‹Car› arTheCars = new List‹Car›;

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

Блуждающие огни 4

Панченко Андрей Алексеевич
4. Блуждающие огни
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Блуждающие огни 4

Я сделаю это сама

Кальк Салма
1. Магический XVIII век
Любовные романы:
любовно-фантастические романы
5.00
рейтинг книги
Я сделаю это сама

Флеш Рояль

Тоцка Тала
Детективы:
триллеры
7.11
рейтинг книги
Флеш Рояль

Боярышня Дуняша

Меллер Юлия Викторовна
1. Боярышня
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Боярышня Дуняша

Газлайтер. Том 8

Володин Григорий
8. История Телепата
Фантастика:
попаданцы
альтернативная история
аниме
5.00
рейтинг книги
Газлайтер. Том 8

Леди для короля. Оборотная сторона короны

Воронцова Александра
3. Королевская охота
Любовные романы:
любовно-фантастические романы
5.00
рейтинг книги
Леди для короля. Оборотная сторона короны

На границе империй. Том 10. Часть 1

INDIGO
Вселенная EVE Online
Фантастика:
космическая фантастика
попаданцы
5.00
рейтинг книги
На границе империй. Том 10. Часть 1

Черный Маг Императора 5

Герда Александр
5. Черный маг императора
Фантастика:
юмористическое фэнтези
попаданцы
аниме
5.00
рейтинг книги
Черный Маг Императора 5

Невест так много. Дилогия

Завойчинская Милена
Невест так много
Любовные романы:
любовно-фантастические романы
7.62
рейтинг книги
Невест так много. Дилогия

Идеальный мир для Социопата 3

Сапфир Олег
3. Социопат
Фантастика:
боевая фантастика
6.17
рейтинг книги
Идеальный мир для Социопата 3

Повелитель механического легиона. Том VIII

Лисицин Евгений
8. Повелитель механического легиона
Фантастика:
технофэнтези
аниме
фэнтези
5.00
рейтинг книги
Повелитель механического легиона. Том VIII

Наследник павшего дома. Том I

Вайс Александр
1. Расколотый мир
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Наследник павшего дома. Том I

Крещение огнем

Сапковский Анджей
5. Ведьмак
Фантастика:
фэнтези
9.40
рейтинг книги
Крещение огнем

Камень Книга двенадцатая

Минин Станислав
12. Камень
Фантастика:
боевая фантастика
городское фэнтези
аниме
фэнтези
5.00
рейтинг книги
Камень Книга двенадцатая