Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции OOP c#.doc
Скачиваний:
44
Добавлен:
22.09.2019
Размер:
3.38 Mб
Скачать

4.9. Объект класса DataColumn – колонка таблицы

Структура любой таблицы описывается свойствами ее столбцов. Столбец таблицы представлен объектом класса DataColumn. Данный класс содержит следующий набор свойств, перечисленный в таблице 26.

Таблица 26

Свойства класса DataColumn

Имя свойства

Тип

Описание

AllowDBNull

boolean

Определяет, допустимы ли в столбце пустые значения

AutoIncrement

boolean

Генерируется ли для столбца новое значение автоинкремента

AutoIncrementSeed

int

Начальное значение автоинкремента

AutoIncrementStep

int

Шаг автоинкремента

Caption

string

Заголовок столбца, отображаемый в элементах управления

ColumnMapping

MappingType

Определяет, как будет записано содержимое столбца в XML-документ

ColumnName

string

Имя столбца в таблице

DataType

Type

Тип данных столбца

DefaultValue

object

Значение по умолчанию в столбце

Expression

string

Выражение для вычисляемых столбцов

ExtendedProperties

PropertyCollection

Набор динамических свойств столбца и их значений

MaxLength

int

Максимально допустимая длина строки данных для столбца

Namespace

string

Имя пространства имен XML, используемого при загрузке и чтении столбца из XML-файла

Ordinal

int

Порядковый номер столбца в таблице

Prefix

string

Префикс пространства имен XML; используется при загрузке и чтении столбца из XML-файла

ReadOnly

boolean

Указывает, что содержимое столбца доступно только для чтения

Table

DataTable

Таблица, в состав которой входит столбец

Unique

Boolean

Должно ли быть значение в столбце уникальным в пределах таблицы

«Ручное» создание объектов-столбцов используется при самостоятельном формировании схемы DataSet. Минимально допустимая настройка столбца заключается в указании его имени и типа данных1. После этого столбец может быть добавлен в таблицу (при этом заполнятся свойства Ordinal и Table).

DataColumn dc = new DataColumn();

dc.ColumnName = "New Column";

dc.DataType = typeof(int);

DataTable dt = new DataTable();

dt.Columns.Add(dc);

Класс DataColumn имеет несколько перегруженных конструкторов, один из которых позволяет указать имя и тип столбца как параметры:

DataColumn dc = new DataColumn("New Column", typeof(int));

Для строк таблицы можно указать значение по умолчанию в столбце – свойство столбца DefaultValue. Если свойство AllowDBNull установлено в true, то допустимы пустые значения столбца (столбец может содержать объект класса DBNull1).

Свойства AutoIncrement, AutoIncrementSeed и AutoIncrementStep используются для организации автоматического приращения значений столбца (по умолчанию автоприращение не активно). Тип свойства с автоприращением должен быть целочисленным. Автоприращение может быть полезно при организации первичного ключа таблицы2.

При работе с набором данных существует возможность сохранить набор в виде XML-документа. Свойство ColumnMapping настраивает представление столбца при сохранении. Значениями свойства выступают элементы перечисления MappingType. Следующий код обеспечивает сохранение значений столбца id в виде атрибута:

id.ColumnMapping = MappingType.Attribute;

К свойствам для поддержки работы с XML относятся также свойства Namespace и Prefix.

В любой таблице существует возможность создать вычисляемый столбец. Для этого у столбца устанавливается свойство Expression. Это строка, содержащая специальное выражение, используемое для вычисления значений столбца. Подробнее о работе с вычисляемыми столбцами смотрите в документации MSDN.

Столбец имеет свойство ExtendedProperties, которое можно рассматривать как хэш-таблицу, связанную со столбцом. Ключами такой хэш-таблицы должны является строки. Вот пример использования свойства ExtendedProperties:

// Помещаем в ExtendedProperties некоторую информацию

id.ExtendedProperties.Add("Comment", "Primary key");

id.ExtendedProperties.Add("Author", "Alex");

// В произвольный момент можем извлечь ее

Console.WriteLine(id.ExtendedProperties["Comment"]);

Для хранения столбцов класс DataTable использует свойство Columns типа DataColumnCollection. Добавлять столбцы можно по одному (метод DataColumnCollection.Add()) или целым массивом (метод DataColumnCollection.AddRange()). Кроме этого, метод Add() имеет удобную перегруженную версию, которая позволяет неявно создать столбец, указав его имя и тип:

// Создали таблицу

DataTable Artists = new DataTable("Artists");

// Добавили столбцы, которые создали и настроили до этого

Artists.Columns.Add(id);

Artists.Columns.Add(name);

DataTable Users = new DataTable("Users");

// Столбцы можно создавать при добавлении в таблицу...

Users.Columns.Add("id", typeof(int));

Users.Columns.Add("user_name", typeof(string));

Users.Columns.Add("user_address", typeof(string));

// ...а потом их вот так настраивать

Users.Columns["user_name"].MaxLength = 30;