Использование наборов данных. Множественные таблицы в объекте DataSet (Набор данных).
Метод SqlDataAdapter::FillSchema заполняет DataSet (Набор данных) данными из таблиц, а также информацией о первичных ключах, связанных с таблицами. Затем программа просматривает содержимое таблиц и выводит на печать данные и первичные ключи таблиц. Доступ к содержащимся в DataTable (Таблица данных) объектам DataColumn осуществляется с помощью коллекции Columns (Столбцы), также являющейся частью объекта DataTable (Таблица данных).
lEnumerator *pEnum = dataset › Tables › GetEnumerator(); // набор данных › Таблицы while (pEnum › MoveNext ()) { DataTable *t = dynamic_cast<DataTable *>(pEnum › Current); Console::WriteLine(t › TableName); DataColumn *dc [] = t › PrimaryKey; for (int i=0; i<dc › Length; i++) { Console::WriteLine( "\tPrimary Key Field {0} = {!}", // " \t Поле первичного ключа {0} = {1} ", _box(i), dc[i] › ColumnName); } Console::Write("\t"); // Запись lEnumerator *pEnum = t › Columns › GetEnumerator(); // Столбцы while (pEnum › MoveNext()) { DataColumn *c = dynamic_cast<DataColumn *>(pEnum › Current); Console::Write ("{0, -20}", c › ColumnName); // Запись } Console::WriteLine(""); pEnum = t › Rows › GetEnumerator(); // Строки while (pEnum › MoveNext()) { DataRow *r = dynamic_cast<DataRow *>(pEnum › Current); Console::Write("\t"); // Запись for (int i=0; i<r › ItemArray.Length; i++) Console::Write (// Запись "{0, -20}", r › get_Item(i) › ToString() › Trim()); // Вырезка Console::WriteLine(""); } }
Программа выводит на экран название таблицы, первичные ключи, названия столбцов и данные таблиц:
Order Details Primary Key Field 0 = OrderlD Primary Key Field 1 = ProductID OrderlD ProductID UnitPrice Quantity Discount 10285 1 14.4 45 0.2 10294 1 14.4 18 0 Shippers Primary Key Field 0 = ShipperlD ShipperlD CompanyName Phone 1 Speedy Express (503) 555-9831 2 United Package (503) 555-3199 3 Federal Shipping (503) 555-9931
А вот и перевод:
Подробности заказа Поле первичного ключа 0 = OrderlD Поле первичного ключа 1 = ProductID Идентификатор заказа Идентификатор продукта Цена Количество Скидка 10285 1 14.4 45 0.2 10294 1 14.4 18 О Грузоотправители Поле первичного ключа 0 = ShipperlD Идентификатор грузоотправителя Название компании Телефон 1 Быстрый экспресс (503) 555-9831 2 Объединение пакет (503) 555-3199 3 Федеральная отгрузка (503) 555-9931