Чтение онлайн

ЖАНРЫ

Обработка баз данных на Visual Basic®.NET

Прайс Кевин Т.

Шрифт:

Вернемся к таблице Departments для демонстрации этого способа работы на примере проекта DataSetCode из главы 5, "ADO.NET: объект DataSet".

1. Откройте проект DataSetCode в среде Visual Studio .NET.

2. В форме под кнопкой Data Views создайте кнопку, перетаскивая ее из панели элементов управления.

3. В окне Properties укажите значение btnTypedDataSet для свойства (Name) и значение Typed DataSet для свойства Text этой кнопки.

Теперь нужно включить в проект используемую схему: либо обратиться к уже готовому файлу с расширением .xsd, либо создать новый с помощью компонентов вкладки Data панели

элементов управления.

1. Вставьте в форму новый компонент SqlDataAdapter. В диалоговом окне программы-мастера Data Adapter Configuration Wizard выберите подключение к базе данных Novelty. Затем в диалоговом окне Choose a Query Type выберите переключатель Use SQL statements. В диалоговом окне Generate the SQL statements укажите команду SELECT * FROM tblDepartment для загрузки данных в объект — набор данных. По окончании работы с программой-мастером Data Adapter Configuration Wizard укажите значение daDepartments для свойства (Name) для созданного объекта — адаптера данных.

2. Откройте диалоговое окно Generate DataSet (Создать набор данных), выбрав команду меню Data→Generate DataSet или щелкнув правой кнопкой мыши на форме и выбрав в контекстном меню команду Generate DataSet. В группе переключателей Choose a dataset (Выбрать набор данных) выберите переключатель New (Создать), введите в текстовом поле имя DepartmentDS, установите флажок Add this dataset to the designer (Включить этот набор данных в приложение) и щелкните на кнопке OK.

3. Укажите значение dsDepartments для свойства (Name) для созданного объекта — набора данных.

После выполнения этих действий генератор набора данных включит в проект файл схемы DepartmentDS.xsd и файл DepartmentDS.vb, который реализует специализированные классы набора данных DataSet. Файлы отображаются только после щелчка на кнопке Show all files (Показать все файлы) в верхней части окна Solution Explorer.

4. Щелкните дважды на файле DepartmentDS.xsd в окне Solution Explorer для отображения диалогового окна редактирования схемы XML.

5. Попробуйте внести небольшие изменения в имена элементов схемы. Вместо имени tblDepartment укажите в самом верхнем левом текстовом поле имя Departments, как показано на рис. 7.7.

РИС. 7.7. Схема DepartmentsDS в окне редактирования схемы

6. Щелкните правой кнопкой мыши на окне редактирования схемы и убедитесь в том, что в контекстном меню установлен флажок параметра Generate Dataset. Он устанавливается по умолчанию, но если он все же не установлен по какой-то причине, то установите его снова.

7. Сохраните схему и закройте окно редактирования схемы. В результате этих действий будет автоматически сгенерирован файл DepartmentsDS.vb.

НА ЗАМЕТКУ

Для просмотра содержимого файла DepartmentsDS.vb откройте его в окне редактирования кода. Учтите, что для указанного имени таблицы Departments генератор кода в дополнение к уже имеющемуся типизированному объекту создаст следующие объекты:

DepartmentsDataTable

DepartmentsDataRow

DepartmentsRowChangeEvent
 

Теперь следует

создать код для использования типизированного объекта DepartmentsDS, который показан в листинге 7.8.

Листинг 7.8. Код отображения содержимого типизированного объекта DepartmentsDS

Private Sub btnTypedDataSet_Click(ByVal sender As System.Object, _

 ByVal e As System.EventArgs) Handles btnTypedDataSet.Click

 daDepartments.Fill(dsDepartments, "Departments")

 DisplayDepartments(dsDepartments)

End Sub

Private Sub DisplayDepartments(ByVal ds As DepartmentsDS)

 Me.lstOutput.Items.Clear

 Me.lstOutput.Items.Add("DISPLAY TYPED DATASET")

 Me.lstOutput.Items.Add("=====================")

 ' Каждое поле теперь является свойством объекта DepartmentsDS.

 Dim row As DepartmentsDS.DepartmentsRow

 For Each row In ds.Departments.Rows

Me.lstOutput.Items.Add( _

ds.Departments.IDColumn.ColumnName _

& ": " & row.ID.ToString)

Me.lstOutput.Items.Add( _

ds.Departments.DepartmentNameColumn.ColumnName _

& ": " & row.DepartmentName)

 Next

End Sub

В подпрограмме btnTypedDataSet_Click сначала используется метод Fill объекта daDepartments для вставки данных в таблицу Department. Затем вызывается подпрограмма DisplayDepartments для отображения содержимого таблицы с помощью циклического обхода всех записей таблицы с указанием имени поля и значения в нем. Этот подход несколько отличается от описанных ранее.

• Переменная row создается с указанием типа записи DepartmentDS.DepertmentsRow, а не как универсальный объект DataRow.

• Таблица Departments доступна как свойство объекта ds.Departments, а не как элемент коллекции таблиц Tables, т.е. ds.Tables("Departments").

• Поля таблицы доступны как свойства объекта-таблицы, например ds.Column и ds.Departments.DepartmentNameColumn, а не как элементы коллекции полей Columns, т.е. ds.Tables("Departments").Columns("ID") и ds.Tables("Departments").Columns("DepartmentName").

• Значения полей доступны как свойства объекта-записи, например row.ID и row. DepartmentName, а не как элементы коллекции значений Items объекта-записи Rows, т.е. row("ID") и row("DepartmentName").

На рис. 7.8 показано, как типизированные свойства (например, DepartmentName) представлены в контекстном меню средства IntelliSense, которое ускоряет процесс создания кода.

РИС. 7.8. Контекстное меню средства IntelliSense со свойствами типизированного объекта DataSet

Поделиться с друзьями: