Опубликован: 05.08.2007 | Уровень: специалист | Доступ: платный
Лекция 11:

Типизированный объект DataSet. Чтение и запись XML-документов

Получение информации о структуре объекта DataSet

После загрузки схемы в объект DataSet можно получить информацию о его структуре - таблицах, столбцах, отношениях между таблицами. Для этого применяются свойства, приведенные в таблице 11.7.

Таблица 11.7. Некоторые свойства объекта DataSet
Свойство Описание
Tables Ссылка на коллекцию DataTable
Tables.Count Количество объектов DataTable (таблиц)
Relations Ссылка на коллекцию DataRelation
Relations.Count Количество объектов DataRelation (отношений)
Relations[индекс].ParentTable Родительская таблица отношения с заданным индексом
Relations[индекс].ChildTable Дочерняя таблица отношения с заданным индексом
Tables[индекс].TableName Название таблицы с заданным индексом в коллекции DataTable
Tables[индекс].Columns Ссылка на коллекцию DataColumn (столбцов)
Tables[индекс].Columns.Count Количество объектов DataColumn (столбцов)
Tables[индекс].Columns[индекс].ColumnName Название столбца с заданным индексом в коллекции DataColumn
Tables[индекс].Columns[индекс].DataType Тип данных столбца с заданным индексом в коллекции DataColumn

Скопируйте папку приложения TypedDataSet и назовите ее "Structure TypedDataSet". Свойству Dock элемента DataGrid, расположенного на форме, устанавливаем значение "Left". Добавляем элемент Splitter. Перетаскиваем элемент RichTextBox, свойству Dock устанавливаем значение "Fill", удаляем название в поле свойства Text. В конструкторе формы после создания всех объектов добавляем следующий код:

public Form1()
{
...
richTextBox1.Text+= ("Структура объекта DataSet." +
 dsTour.DataSetName);
//Вывод количества таблиц и отношений
richTextBox1.Text+= ("\nКоличество таблиц: "+
 dsTour.Tables.Count.ToString());
richTextBox1.Text+= ("\nКоличество отношений: "+
 dsTour.Relations.Count.ToString());
			
for(int i=0;i<dsTour.Tables.Count;i++)
{
//Вывод названий таблиц
 richTextBox1.Text+=( "\n"+"\n Таблица: "+
  dsTour.Tables[i].TableName.ToString());
 richTextBox1.Text+=(" из "+dsTour.Tables[i]. Columns.Count.ToString() +
  " столбцов"+"\n");
 for(int j=0;j<dsTour.Tables[i].Columns.Count;j++)
 {
  //Вывод названий столбцов и их типов данных
  richTextBox1.Text+=("\nСтолбец: "+
   dsTour.Tables[i].Columns[j].ColumnName.ToString()+
   " тип данных: "+ dsTour.Tables[i].Columns[j].DataType);
  }
}
//Вывод названий связанных таблиц и отношений
for(int k = 0; k<dsTour.Relations.Count; k++)
{				
 richTextBox1.Text+= ("\n"+"\nРодительская таблица: " +
  dsTour.Relations[k].ParentTable+ " --- отношение: " +
  dsTour.Relations[k].ParentKeyConstraint +
  " --- дочерняя таблица: " +
  dsTour.Relations[k].ChildTable);
}
}

Запускаем приложение. В текстовое поле выводится информация о таблицах, полях, отношениях (рис. 11.24):

 Структура объекта DataSet

Рис. 11.24. Структура объекта DataSet

В программном обеспечении к курсу вы найдете приложение Structure TypedDataSet (Code\Glava5\ StructureTypedDataSet).

Александра Тимофеева
Александра Тимофеева
Украина, Киев
Bakke Aleksander
Bakke Aleksander
Россия, Mуниципальный округ N 4