Иллюстрированный самоучитель по Architecture .NET

Использование наборов данных. Множественные таблицы в объекте DataSet (Набор данных).

На рис. 9.5 представлена иерархия объектов, содержащихся в DataSet (Набор данных). Прежде, чем приступить к материалу, излагаемому ниже, полезно ознакомиться с этой диаграммой.

Иллюстрированный самоучитель по Architecture .NET › Программирование в ADO.NET › Использование наборов данных. Множественные таблицы в объекте DataSet (Набор данных).
Рис. 9.5. Иерархия класса DataSet (Набор данных)

Множественные таблицы в объекте DataSet (Набор данных)

Каждый объект DataSet (Набор данных) содержит коллекцию из одного или более объектов, DataTable (Таблица данных). Каждый объект DataTable (Таблица данных) соответствует одной таблице. С помощью свойства SelectCommand, в котором содержится операция соединения, можно производить выборку из нескольких таблиц базы данных в один объект DataTable (Таблица данных).

При необходимости обновить содержимое множественных таблиц достаточно определить лишь команду обновления, так как информация о связях между таблицами базы данных уже известна. В файле Hotel-Bookings.h нашего примера свойство SelectCommand объекта SqlDataAdapter, содержащегося в объекте HotelBroker (Посредник, бронирующий места в гостинице), определено следующим образом:

String *cmd = // Строка
"select Customerld, HotelName, City, ArrivalDate, // выбрать
DepartureDate, Reservationld from Reservations, Hotels
where Reservations.Hotelld = Hotels.Hotelld";
// где Резервирование.Hotelld = Гостиницы.Hotelld";
adapter › SelectCommand = new SqlCommand(cmd, conn);
dataset = new DataSet; // новый Набор данных adapter › Fill(dataset, "Reservations");
// Заполнить (набор данных, "Резервирование")

В этом случае DataSet (Набор данных) содержит один объект DataTable (Таблица данных), представляющий таблицу, называющуюся Reservations (Резервирование). Информация о том, что некоторые данные получены из таблицы Hotels, не сохраняется.

В один набор данных можно загрузить данные нескольких таблиц. Это продемонстрировано в примере DataSchema, в котором используется база данных Northwind.

adapter › SelectCommand = new SqlCommand(
"select * from [Order Details] where Productld = 1",
// "выбрать * из [Подробности заказа] где Productld = 1 ",
conn);
adapter › FillSchema (
dataset, SchemaType::Source, "Order Details");
// набор данных, SchemaType:: Источник, " Подробности заказа");
adapter › Fill(dataset, "Order Details");
// Заполнить (набор данных, " Подробности заказа");
adapter › SelectCommand =
new SqlCommand("select * from Shippers", conn);
// выбрать * из Грузоотправителей adapter › FillSchema(
dataset, SchemaType::Source, "Shippers");
// набор данных, SchemaType:: Источник, "Грузоотправители");
adapter › Fill(dataset, "Shippers");
 // Заполнить (набор данных, "Грузоотправители");

В этом случае объект DataSet (Набор данных) содержит две таблицы, OrderDetails и Shippers.

Если Вы заметили ошибку, выделите, пожалуйста, необходимый текст и нажмите CTRL + Enter, чтобы сообщить об этом редактору.