Architecture Net



         

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


При помещении данных в объект DataSet (Набор данных) считываются также и связанные с этими данными таблицы и столбцы. Каждый набор данных имеет коллекции, представляющие все таблицы, столбцы и строки, связанные с данными, содержащимися в этом наборе.
Класс HotelBroker (Посредник, бронирующий места в гостинице) из используемого нами в качестве примера приложения содержит метод ListHotelsToFile, в котором продемонстрировано, как получить такую информацию и записать ее в файл Hotels. txt. Этот метод вызывается при нажатии кнопки на форме, описанной в файле MainAdmin-Form.cs. Вывод данных осуществляется перенаправлением вывода на консоль. hotelDA-taset — набор данных, содержащий данные из базы данных HotelBroker (Посредник, бронирующий места в гостинице). Приведем фрагмент файла HotelBroker.h.

TextWriter *tw = new StreamWriter("Hotels.txt");
Console::SetOut(tw); // печатающее устройство -
// переадресовать вывод
try
{
Console::WriteLine("Hotels"); // Гостиницы
DataTable *t =
hotelsDataset->Tables->get_Item( // Таблицы
"Hotels"); // Гостиницы
if (t == 0) // если (t == 0)
return;
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) ;
for (int i=0; i<t->Colunms->Count; i++) // Столбцы-> Счет
{
Type *type = r->get_Item(i)->GetType() ;
if (type->FullName->Equals("System::Int32"))
// если равняется ("Система:: Int32"))
Console::Write("{О, -20}", r->get_Item(i) ) ;
else
{
String *s = r->get_Item(i)->ToString(); // Строка
s = s->Trim(); // Вырезка
Console::Write("{0, -20}", s);
}
}
Console::WriteLine("");
}
Console::WriteLine("");
}
catch(Exception *e) // Исключение
{
throw e;
}
_finally // наконец
{
tw->Close ();
}




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