Обработка баз данных на 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 генератор кода в дополнение к уже имеющемуся типизированному объекту создаст следующие объекты:
Теперь следует
создать код для использования типизированного объекта DepartmentsDS, который показан в листинге 7.8.В подпрограмме 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