• Объект DataColumn является базовой единицей извлечения данных и определения схемы для объекта DataTable. Он содержит специализированную информацию для каждого поля объекта DataTable, включая имя, тип данных и другие атрибуты (например, свойства Unique, Readonly, AllowDBNull и Кроме того, он имеет свойство Expression для вычисления значения поля или создания итогового поля.
• Объект DataRow представляет одну запись объекта DataTable и используется для добавления, извлечения и изменения данных в объекте DataTable. С его помощью можно осуществлять последовательный или непосредственный доступ к нужным записям объекта DataTable.
• Объект DataRelation определяет отношение между двумя таблицами объекта DataSet. Он представляет классическое отношение между родительской и дочерней таблицей (т.е. между ключевым и внешним полями двух таблиц). Переходы между отношениями выполняются с помощью коллекций ChildRelations и ParentRelations (объектов DataRelation) объекта DataTable.
• Объект Constraint определяет правило, согласно которому поддерживается целостность данных в объекте DataTable. Он содержит уже знакомое ограничение UniqueConstraint, гарантирующее уникальность значений таблицы, а также ограничение ForeignKeyConstraint, определяющее действия по ношению к строкам в связанной таблице. Ограничение может относиться к одному или нескольким объектам DataColumn. Каждый объект DataTable имеет свойство Constraint с коллекцией ограничений для данной таблицы.
Ввод данных в объект DataSet
Для ввода данных в таблицы DataTable объекта DataSet предусмотрены перечисленные ниже способы.
1. Программирование определений метаданных и прямая вставка данных.
2. Использование объекта DataAdapter для создания запроса по отношению к источнику данных.
3. Загрузка XML-документа.
В этой главе представлен первый из перечисленных выше способов, в главе 6, "ADO.NET: объект DataAdapter", — второй, а в главе 10, "ADO.NET и XML", — третий. Этот раздел начинается с описания базовых функций объектов DataSet и DataTable.
Учтите, что после загрузки данных в объект DataSet, использованный метод загрузки далее уже не имеет никакого значения, потому что все последующие операции с данными выполняются идентично.
Определение схемы объекта DataTable
Для иллюстрации основных принципов работы следует создать простую форму с помощью перечисленных ниже действий.
1. Запустите интегрированную среду разработки приложений Visual Studio .NET.
2. Создайте новый проект Visual Basic Windows Application. Для этого в диалоговом окне New Project (Новый проект) выберите тип проекта Visual Basic Project в области Project Types (Типы проектов), а затем шаблон Windows Application (Приложение Windows) в области Templates (Шаблоны).
3. Назовите проект DataSetCode.
4. Укажите путь к файлам проекта.
5. Увеличьте размер формы Form1.
6. В окне Properties укажите значение frmDataSets для свойства (Name) и значение DataSets для свойства Text формы Form1.
7. В верхнем левом углу формы создайте кнопку, перетаскивая ее из панели элементов управления.
8. В окне Properties укажите значение btnCreateDS для свойства (Name) и значение Create DataSet для свойства Text этой кнопки.
9. В правой части формы создайте поле со списком, перетаскивая его из панели элементов управления.
10. В окне Properties укажите значение lstOutput для свойства (Name).
11. Увеличьте размер поля со списком, чтобы оно занимало до 80% всей площади формы.
В верхней части файла введите следующий код:
Imports System
Imports System.Data
Затем в определении класса формы frmDataSets введите приведенный ниже код.
Private dsEmployeelnfo As DataSet
Private Sub btnCreateDS_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles btnCreateDS.Click
CreateDataSet()
AddData()
DisplayDataSet()
End Sub
Подпрограмма btnCreateDS_Click обработки щелчков на кнопке Create DataSet вызывает три другие подпрограммы для каждой фазы работы приложения. Переменная dsEmployeelnfo является объектом DataSet, доступ к которому выполняется с помощью подпрограмм внутри подпрограммы btnCreateDS_Click.
Обычно объекты DataTable содержатся в объекте DataSet, но объект DataSet можно использовать непосредственно, как правило в наиболее простых ситуациях, когда не требуется организовывать связь между несколькими таблицами.
Итак, прежде всего нужно определить схему (или структуру) всех используемых таблиц. Для этого нужно определить все объекты DataColumn таблицы и указать их свойства, как показано на примере подпрограммы CreateDataSet () в листинге 5.1.