
- •Организация c#-системы ввода-вывода: байтовые и символьные потоки. Встроенные потоки.
- •Классы потоков. Класс Stream. Классы байтовых потоков. Классы символьных потоков. Классы двоичных потоков.
- •Класс FileStream и файловый ввод-вывод на побайтовой основе. Открытие и закрытие файла. Запись данных в файл. Считывание байтов из объекта класса FileStream.
- •Файловый ввод-вывод с ориентацией на символы. Использование класса StreamWriter. Использование класса StreamReader.
- •Считывание и запись двоичных данных. Класс BinaryWriter. Класс BinaryReader.
- •6. Навигация по файловой системе: классы для работы с файловой системой.
- •7. Получение сведений о файле; копирование файлов; перечисление файлов в папке; изменение расширения файлов.
- •5.3. Изменение расширения файлов
- •8. Основы организации потоков. Потоки и многозадачность. Пространство имен System.Threading. Класс Thread. Создание потока.
- •9. Использование нескольких потоков. Планирование потоков, приоритеты потоков.
- •10. Проблемы одновременности и синхронизации потоков. Общий доступ к данным из разных потоков, предотвращение коллизий.
- •11. Синхронизация доступа к общим данным с помощью блокировок. Управление временем существования потоков.
- •12. Краткий обзор ado.Net. Три стороны технологии ado.Net. Пространство имен System.Data.
- •13. Поставщики данных ado.Net. Поведение объектов подключения.
- •14. Объектная модель ado.Net
- •16. Создание соединения с источником данных. Члены типа dbConnection. Обработка исключений при работе с ms sql
- •Конструкторы
- •Свойства
- •События
- •17. Работа с бд с пом. Sql-запросов. Класс SqlCommand. Объект Command. Создание и инициализация. Командная строка sql-запроса CommandText.
- •Конструкторы
- •Свойства
- •18. Выборка, добавление, удаление и обновление данных с помощью sql-запросов на подсоединенном уровне.
- •19. Вывод информации с использованием объекта чтения данных: создание SqlDataReader; чтение данных из DataReader; чтение полей из текущей записи; закрытие DataReader.
- •20. Организация хранения данных. Объект DataSet
- •21. Таблицы и поля: объекты DataTable и DataColumn
- •22. Строки: объект DataRow
- •23. Связи между таблицами: объект DataRelation
- •24. Создание подключения к базе данных. Управляемые провайдеры
- •25. Объект DataAdapter. Класс SqlDataAdapter
- •Конструкторы:
- •Свойства
- •Организация c#-системы ввода-вывода: байтовые и символьные потоки. Встроенные потоки.
21. Таблицы и поля: объекты DataTable и DataColumn
Объект DataSet представляет собой буфер для хранения данных из базы, локальную копию взаимосвязанных таблиц. Этот буфер предназначен для хранения структурированной информации, представленной в виде таблиц. В связи с этим первым, самым очевидным вложенным объектом DataSet, является DataTable. Тип DataSet – это контейнер, используемый для любого числа объектов DataTable. Внутри одного объекта DataSet может храниться неск-ко загруженных таблиц из БД, помещенных в соответствующие объекты DataTable.
Всякая таблица состоит из столбцов (называемых также полями или клонками) и строк (записей). Для обращения к ним и для управления столбцами и строками в объекте DataTable предназначены специальные объекты – DataColumn и DataRow.
Изучим объект DataColumn. Он представляет отдельный столбец в пределах DataTable. DataColumn – это блок для создания схемы DataTable. Каждый объект DataColumn имеет свойство DataType, которое определяет тип данных, содержащихся в каждом объекте DataColumn. Например, можно ограничить тип данных до целых, строковых и десятичных чисел. Поскольку данные, содержащиеся в DataTable, обычно переносятся обратно в исходный источник данных, необходимо согласовывать тип данных с источником.
Свойства класса DataColumn:
АllowDBNull – Указывает, может ли данный столбец содержать пустые значения. По умолчанию содержит значение true.
AutoIncrement, AutoIncrementSeed, AutoIncrementStep – Применяются для настройки поведения автоинкремента для данного столбца. Это может оказаться удобным, если нужно обеспечить уникальность значений в этом DataColumn (например, если он содержит первичные ключи). По умолчанию DataColumn не поддерживает автоинкрементное поведение.
Caption – Задает или получает заголовок, к-ый должен отображаться для данного столбца. Это позволяет определить более наглядные варианты для имен столбцов в БД.
ColumnMapping – Определяет представление DataColumn при сохранении DataSet в виде XML-документа с помощью метода DataSet.WriteXml(). Можно указать, что столбец данных должен быть записан как XML-элемент, XML-атрибут, простое текстовое содержимое, либо его следует полностью проигнорировать.
ColumnName – Задает или получает имя столбца из коллекции Columns (т.е. его внутреннее представление в DataTable). Если не занести значение в ColumnName явно, то по умолчанию там находится слово *Column* с числовыми суффиксами по формуле n+1 (т.е. Column1, Column2, Column3 и т.д.)
DataType – определяет тип данных (логический, строковый, с плавающей точкой и т.д.), хранящихся в данном столбце
DefaultValue – Задает или получает значение по умолчанию, заносимое в данный столбец при вставке новых строк
Expression – Задает или получает выражение для фильтрации строк, вычисления значения столбца или создания агрегированного столбца
Ordinal – Задает или получает числовое положение столбца в коллекции Columns, содержащейся в DataTable.
ReadOnly – Определяет, предназначен ли данный столбец только для чтения после добавления строки в таблицу. По умолчанию равно false.
Table – Получает объект DataTable, содержащий данный DataColumn
Unique – Задает или получает значение, указывающее, должны ли быть уникальными значения во всех строках данного столбца, или допустимы совпадения. При присвоении столбцу ограничения первичного ключа свойство Unique должно содержать значение true
Создание объектов DataColumn:
Console.WriteLine("Создание объектов DataColumn, отображающих реальные столбцы таблицы Туристы");
DataColumn cod = new DataColumn("Код туриста", typeof(int));
cod.Caption = "Код туриста";
cod.ReadOnly = true;
cod.AllowDBNull = false;
cod.Unique = true;
DataColumn fam = new DataColumn("Фамилия", typeof(string));
fam.Caption = "Фамилия";
fam.ReadOnly = false;
fam.AllowDBNull = true;
fam.Unique = false;
DataColumn name = new DataColumn("Имя", typeof(string));
name.Caption = "Имя";
name.ReadOnly = false;
name.AllowDBNull = true;
name.Unique = false;
DataColumn ot = new DataColumn("Отчество", typeof(string));
ot.Caption = "Отчество";
//Свойство Caption используется для отображения названия столбца при выводе данных.
cod.AutoIncrement=true;
cod.AutoIncrementSeed = 0;
cod.AutoIncrementStep = 1;
//При добавлении строк в таблицу значение столбца cod увеличится //на 1.Начальное значение столбца 0.
Тип DataColumn обычно не существует автономно, а добавляется в соответствующий объект DataTable:
Console.WriteLine("Создание объекта DataTable и вставка объектов DataColumn в коллекцию столбцов:");
DataTable Turistes = new DataTable("Туристы");
Turistes.Columns.AddRange(new DataColumn[] { cod, fam, name, ot });
Теперь объект DataTable Turistes содержит четыре объекта DataColumn, которые представляют схему находящейся в памяти таблицы Turistes. Пока эта таблица не содержит данных и не входит в коллекцию таблиц, принадлежащих конкретному DataSet. Начнем с заполнения таблицы с помощью объекта DataRow.