Студопедия  
Главная страница | Контакты | Случайная страница

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатика
ИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханика
ОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторика
СоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансы
ХимияЧерчениеЭкологияЭкономикаЭлектроника

Основные члены типа DataTable

Читайте также:
  1. Cхемы вязания спицами для начинающих: основные узоры и схемы
  2. I. ОСНОВНЫЕ ПОЛОЖЕНИЯ.
  3. II. ОСНОВНЫЕ ПОЛОЖЕНИЯ ТЕМЫ
  4. II. ОСНОВНЫЕ ПОНЯТИЯ И ПОЛОЖЕНИЯ ТЕМЫ
  5. III. Основные принципы патогенетической терапии вирусных гепатитов
  6. RAID массивы. История создания RAID массивов. Основные преимущества и недостатки RAID массивов всех уровней. Принципы работы.
  7. X. Основные направления развития по видам туризма
  8. А) Основные группы психически зависимых соматических расстройств
  9. А) Основные психофизические функции
  10. Аналитическая функция маркетинга. Основные направления анализа

CaseSensitive – Указывает, чувствительны ли к регистру символов строковые сравнения в таблице. По умолчанию равно false

ChildRelations – Возвращает коллекцию дочерних отношений для данного DataTable (если они есть).

Constraints – Получ коллекцию ограничений, поддерживаемых данной таблицей

Сору() – Метод, копирующий схему и дату DataTable в новый экземпляр

DataSet – Получает DataSet, содержащий данную таблицу (если он есть)

DefaultView – Получает специализированное представление таблицы, к-ое может

содержать отфильтрованное представление или позицию курсора.

ParentRelations – Получ коллекцию родит-ких отношений для данного DataTable

PrimaгуКеу – Получ или задает массив столбцов, которые выступают в качестве первичных ключей для таблицы данных.

RemotingFormat – Позволяет определить формат сериализации объектом DataSet его содержимого (двоичный или XML) для уровня NET Remoting

TableName – Получ или задает имя таблицы. Значение этого свойства можно так же задать через параметр конструктора

Установим свойство PrimareKey (первичный ключ для таблицы) столбцу cod:

Console.WriteLine("Установка первичного ключа для таблицы:");

Turistes.PrimaryKey = new DataColumn[] { Turistes.Columns[0] };

Наш объект DataTable Turistes создан. Осталось вставить его в объект DataSet с помощью коллекции Tables: MyDS.Tables.Add(Turistes);

Выведем содержимое объекта DataSet на экран:

Console.WriteLine("Данные DataSet:");

Console.WriteLine("Таблицы в DataSet:" + MyDS.DataSetName);

//Вывод имени DataSet и расширенных свойств:

foreach (System.Collections.DictionaryEntry de in MyDS.ExtendedProperties)

Console.WriteLine("Ключ " + de.Key + ", значение " + de.Value);

Console.WriteLine();

//Вывод каждой таблицы:ъ

foreach (DataTable dt in MyDS.Tables)

{

Console.WriteLine("Таблица:" + dt.TableName);

//Вывод имен столбцов:

for (int curCol = 0; curCol < dt.Columns.Count; curCol++) Console.Write(dt.Columns[curCol].ColumnName.Trim() + "\t");

Console.WriteLine("\n----------------------------------------");

//Вывод содержимого DataTable:

for (int curRow = 0; curRow < dt.Rows.Count; curRow++)

{

for (int curCol = 0; curCol < dt.Columns.Count; curCol++) Console.Write(dt.Rows[curRow][curCol].ToString() + "\t");

Console.WriteLine();

}

}

Тип DataTable поддерживает также метод CreateDataReader(). Этот метод позволяет получить данные DataTable, используя схему, соответствующую схеме навигации объекта чтения Datareader (только вперед и только для чтения):

DataTableReader dtReader=Turisres.CreateDataReader();

while (dtReader.Read())

{

for (int i=0; i<rdReader.FieldCount; i++)

Console.WriteLine(“dtReader.GetName(i) +” “+ dtReader.GetValue(i).ToString());

Console.WriteLine();

}

dtReader.Close();

DataTableReader работает аналогично объекту чтения поставщика данных. Его можно использовать, когда нужно прочесть данные DataTable без просмотра внутренних коллекций строк и столбцов.

 


 

23. Связи между таблицами: объект DataRelation

Всямощьавтономного уровня проявляется тогда, когда объект DataSet содержит несколько взаимосвязанных объектов DataTable. М-ду таблицами могут быть связи. Они представлены объектом DataRelation. В коллекцию данного DataSet можно вставить любое кол-во объектов DataRelation, к-ые описывают все взаимосвязи таблиц. Эти объекты позволяют клиентскому уровню выполнять навигацию м-ду данными таблицам без обращения к сети.

Наконец, в таблицах есть первичные и вторичные ключи – объект Constraint со своими двумя подклассами UniqueConstraint и ForeighKeyConstraint описывают их. Отметим, объекты программы и соотв-щие объекты БД-ых не эквивалентны.

В классе DataSet определяется свойство Relations – набор объектов – представителей класса DataRelations. Каждый такой объект определяет связи между составляющими объект DataSet объектами DataTable (таблицами). Если в DataSet более одного набора DataTable, набор DataRelations будет содержать несколько объектов типа DataRelation. Каждый объект определяет связи между таблицами DataTable. Таким образом, в объекте DataSet реализуется полный набор элементов для управления данными, включая сами таблицы, ограничения и отношения между таблицами.

(Работу со связанными таблицами БД BDTur_firma см. Лабораторная работа5_3.doc!!!)

DataRelation dr1 = new DataRelation("Turisti", ds.Tables["Туристы"].Columns["[Код туриста]"], ds.Tables["Информация о туристах"].Columns["[Код туриста]"]);

ds.Relations.Add(dr1);

DataRelation dr2 = new DataRelation("Putewki", ds.Tables["Информация о туристах"].Columns["[Код туриста]"], ds.Tables["Путевки"].Columns["[Код туриста]"]);

ds.Relations.Add(dr2);

DataRelation dr3 = new DataRelation("Oplati", ds.Tables["Путевки"].Columns["[Код путевки]"], ds.Tables["Оплаты"].Columns["[Код путевки]"]);

ds.Relations.Add(dr3);

DataRelation dr4 = new DataRelation("Sezoni", ds.Tables["Сезоны"].Columns["[Код сезона]"], ds.Tables["Путевки"].Columns["[Код сезона]"]);

ds.Relations.Add(dr4);

DataRelation dr5 = new DataRelation("Turi", ds.Tables["Туры"].Columns["[Код тура]"], ds.Tables["Сезоны"].Columns["[Код тура]"]);

ds.Relations.Add(dr5);

В загруженных таблицах не формируются автоматически все нужные объекты, в некоторых случаях необходимо сделать это самостоятельно. Сами объекты имеют также довольно тонкую и сложную структуру, поэтому это было бы довольно грубым приближением. Однако, на первых порах, для понимания сути полезно помнить следующие соотношения:

DataSet = <одна или несколько таблиц> = <один или несколько объектов DataTable>.

DataTable = <таблица>.

DataTable = <таблица> = <множество полей, столбцов, колонок> =

= <множество объектов DataColumn>.

DataTable = <таблица> = <множество строк> = <множество объектов DataRow>.

DataColumn = <столбец, поле, колонка>.

DataRow = <строка>.

DataRelation = <связь между таблицами>.

Возникает вопрос: для чего нужны эти объекты, если можно обходится и без них для вывода содержимого таблицы, например в элемент DataGridView? Дело в том, что для простого отображения информации создавать эти объекты не требуется, но в этом случае все данные будут однородными текстовыми переменными, подобно таблицам в документе Microsoft Word. DataSet не может сам сформировать структуру данных – тип переменных, первичные и вторичные ключи, связи между таблицами. Для управления такой структурой, для ее адекватного отображения (например, вывод информации с привязкой к элементам, создаваемым в режиме работы приложения) и нужно определение этих объектов.


 




Дата добавления: 2015-09-10; просмотров: 21 | Поможем написать вашу работу | Нарушение авторских прав

Public enum FileAttributes | Основы организации потоков. Потоки и многозадачность. Пространство имен System.Threading. Класс Thread. Создание потока. | Проблемы одновременности и синхронизации потоков. Общий доступ к данным из разных потоков, предотвращение коллизий. | Краткий обзор ADO.NET. Три стороны технологии ADO.NET. Пространство имен System.Data. | Поставщики данных ADO.NET. Поведение объектов подключения. | Объектная модель ADO.NET | Краткий обзор объектов ADO .NET. | События | Свойства | Выборка, добавление, удаление и обновление данных с помощью SQL-запросов на подсоединенном уровне. |


lektsii.net - Лекции.Нет - 2014-2024 год. (0.008 сек.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав