Кроме того, перед добавлением полей в коллекцию Columns для них задаются значения других свойств. Перечисленные ниже свойства Readonly, Unique, AllowDBNull и AutoIncrement уже наверняка знакомы тем, кто имеет опыт создания приложений для работы с базами данных.
Присвоение свойству Readonly значения True указывает на то, что значение поля нельзя изменить.
Присвоение свойству Unique значения True указывает на то, что значения данного поля во всех записях таблицы должны быть уникальными. Это свойство реализуется с помощью автоматического создания ограничения UniqueConstraint для данного поля. Этот способ более подробно рассматривается в разделе об ограничениях таблицы далее в главе.
Присвоение свойству AllowDBNull значения True указывает на то, что в данном поле допускается использование неопределенных значений.
Присвоение свойству AutoIncrement значения True указывает на то, что значение поля увеличивается при каждом добавлении в таблицу новой записи. Для указания начального значения и приращения используются свойства AutoIncrementSeed и AutoIncrementStep.
НА ЗАМЕТКУ
Объект DataTable принимает новую запись и присваивает автоматически увеличенное значение для поля, свойство которого AutoIncrement имеет значение True, только если значение поля отличается от принимаемого по умолчанию.
Среди других свойств объекта DataColumn следует отметить MaxLength (для полей с данными типа String), DefaultValue и Table. Поле также можно определить с выражением для вычисления значения, создания итогового поля или фильтрования строк. Такое выражение может состоять из имен полей текущей записи или других записей, констант, операторов, символов подстановки, итоговых и других функций. Более подробную информацию и примеры таких выражений можно найти в справочных материалах для свойства Expression объекта DataColumn.
Вставка данных в объект DataTable
После определения объекта DataTable и его схемы можно начинать ввод данных.
В листинге 5.2 приводится код вставки записей с данными в DataTable. Подпрограмма AddData включает четыре записи с данными в таблицу Departments и три записи с данными в таблицу Employees следующим образом.
1. Сначала создается новый экземпляр объекта DataRow для нужной таблицы с помощью метода NewRow.
2. Затем присваиваются значения полям этой записи.
3. После этого запись включается в коллекцию записей Rows таблицы с помощью метода Add свойства Rows таблицы.
ЛИСТИНГ 5.2. Код программного ввода данных в объект DataTable
Private Sub AddData ()
Dim dtDepartments As DataTable = dsEmployeeInfo.Tables ("Departments")
Dim dtEmployees As DataTable = dsEmployeeInfo.Tables("Employees")
' Вставка четырех записей в таблицу Departments.
Dim rowDept As DataRow
rowDept = dtDepartments.NewRow
rowDept("ID") = 11
rowDept("DepartmentName") = "Administration"
dtDepartments.Rows.Add(rowDept)
rowDept = dtDepartments.NewRow rowDept("ID") = 22
rowDept("DepartmentName") = "Engineering"
dtDepartments.Rows.Add(rowDept)
rowDept = dtDepartments.NewRow
rowDept("ID") = 33
rowDept("DepartmentName") = "Sales"
dtDepartments.Rows.Add(rowDept)
rowDept = dtDepartments.NewRow rowDept("ID") =44
rowDept("DepartmentName") = "Marketing"
dtDepartments.Rows.Add(rowDept)
' Вставка трех записей в таблицу Employees.
Dim rowEmployee As DataRow
rowEmployee = dtEmployees.NewRow
rowEmployee("FirstName") = "Jackie"
rowEmployee("LastName") = "Goldstein"
rowEmployee("DepartmentID") = 22
dtEmployees.Rows.Add(rowEmployee)
rowEmployee = dtEmployees.NewRow
rowEmployee("FirstName") = "Jeffrey"
rowEmployee("LastName") = "McManus"
rowEmployee("DepartmentID") = 33
dtEmployees.Rows.Add(rowEmployee)
rowEmployee = dtEmployees.NewRow
rowEmployee("FirstName") = "Sam"
rowEmployee("LastName") = "Johnson"
rowEmployee("DepartmentID") = 33
dtEmployees.Rows.Add(rowEmployee)
End Sub
НА ЗАМЕТКУ
Новую запись можно вставить в таблицу, передавая методу Add массив объектов, содержащих данные в порядке следования полей в определении таблицы. В листинге 5.2 этот способ мог быть представлен так:
Dim empData(2) As Object
empData(0) = "Sam"
empData(1) = "Johnson"
empData(3) = 33
dtEmployees.Rows.Add(empData)
Обновление данных в объекте DataSet
Для обновления отдельной записи таблицы необходимо просто организовать доступ к нужной записи и присвоить новое значение одному из полей. Например, для изменения номера отдела, к которому относится Sam Johnson, можно использовать следующую строку кода:
dtEmployees.Rows(2) ("DepartmentID") = 2
НА ЗАМЕТКУ
В этой строке кода номер записи (2) приводится из предположения, что нам известно расположение записей в таблице. Но с практической точки зрения этот способ не совсем удачен, более эффективный и безопасный способ основан на поиске нужной строки (или нескольких строк). Он описывается в разделе о доступе к данным в объекте DataTable далее в главе.
Читать дальше