Architecture Net



         

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


В этом случае объект DataSet (Набор данных) содержит две таблицы, OrderDetails и Shippers. Метод 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

CompEbook.ru Железо, дизайн, обучение и другие




Содержание  Назад  Вперед