VB 18. Связь с базами данных

* Задание: Создайте приложение, которое вводит и редактирует данные о студентах в базу данных «Университет».

работа с базой данных в vb
Рис. 18.1. Компоненты VB для работы с базой данных

Необходимые знания:

  • DataSet – объект Набор данных, состоит из коллекции таблиц и связей; при организации связи с БД он формируется автоматически и служит для кэширования данных из БД, отслеживает и хранит произведенные изменения.
  • Binding Source – скрытый элемент управления, который связывается с БД посредством DataSet. Инкапсулирует источник данных для формы.
  • DataGridView – элемент управления для просмотра записей базы данных. Связывается с конкретной таблицей БД через элемент Binding Source.
  • TableAdapter – скрытый элемент, добавляется автоматически при связывании элемента DataGridView и служит для обмена информацией через созданный канал связи. Его метод Fill заполняет значениями элемент DataSet, служащий для кэширования данных. Его метод Update позволяет обновить произведенные в проекте изменения в самой БД.
  • Binding Navigator – элемент управления, служащий для навигации по базе данных. Связывается с Binding Source.

Выполнение:

  1. Создайте новый проект.
  2. С помощью приложения Access 2007 создайте базу данных Университет из одной таблицы Студенты с тремя полями: ФИО, Факультет и Группа. Заполните несколько записей произвольными данными и сохраните базу данных. Закройте приложение Access
  3. Вернитесь к программе. В меню Data (Данные) выберите пункт Add New Data Source (Добавить новый источник данных). В открывшемся окне выберите пункт Database (База данных) → Next (Далее). Щелкните кнопку NewConnection (Создать подключение) → пункт Microsoft Access DatabaseFile. Щелкните по кнопке Browse (Обзор) и выберите файл созданной базы данных. Чтобы проверить соединение используйте кнопку Test Connection (Проверить подключение). Щелкните ОК и Next (Далее). В появившемся окне о копировании файла данных следует щелкнуть по кнопке Нет.
  4. Отметьте флажок с пунктом Tables (Таблицы) и Vews (Представления), чтобы присоединить все таблицы базы данных. Щелкните Finish (Готово).
  5. Добавьте панель Server Explorer для работы с соединениями, войдя в меню View (Вид) → Server Explorer (Обозреватель баз данных). Переключитесь на панель и посмотрите на добавленное соединение.
  6. На панели ToolBox (Инструменты) выберите элемент Binding Source (это скрытый элемент), формирующий данные из базы данных для формы. Для его свойства DataSourсe установите значение УниверситетDataSet, чтобы связать его с базой данных.
  7. Добавьте элемент DataGridView для просмотра записей базы данных. Для его свойства DataSource установите значение СтудентыBindingSource. Щелкните на стрелочке, находящейся над элементом и выберите пункт PreviewData (Просмотреть данные). Щелкните по кнопке Preview (Просмотр). Запустите проект.
  8. Дважды щелкните на пустом месте дизайна формы и запрограммируйте код для события Load формы (по загрузке формы):
Me.СтудентыTableAdapter.Fill(Me.УниверситетDataSet.Студенты)

Элемент TableAdapter добавляется автоматически при связывании элемента DataGridView и служит для обмена информацией через созданный канал связи. Его метод Fill заполняет значениями элемент DataSet, служащий для кэширования данных.

  1. Добавьте элемент Binding Navigator, служащий для навигации по базе данных. Для его свойства BindingSource установите значение СтудентыBindingSource. Запустите приложение. Попробуйте использовать панель навигации для добавления новой записи.
  2. Если Вы попробуете перезапустить приложение, то добавленные записи не сохранятся.
  3. Необходимо добавить кнопку Сохранить. В процедуру обработки события Click кнопки добавьте следующий код:
Me.СтудентыTableAdapter.Update(Me.УниверситетDataSet.Студенты)

Таким образом, все изменения, накопленные в DataSet, сохраняются (обновляются при помощи метода Update) в базе данных посредством элемента TableAdapter и его метода Update.

  1. Добавьте новую запись и щелкните кнопку Сохранить. Еще раз запустите приложение и отладьте его. Все данные сохранились!
  2. Сохраните проект.
Дополнительное задание.

  1. Расширьте приложение так, чтобы в базе данных сохранялись поля Отделение и Курс, соответственно добавив их сначала в саму базу данных. Для добавления полей в элемент DataSet выберите его в окне SolutionExplorer, и в контекстном меню элемента выберите пункт Configure. Добавьте поля в SQL-запрос. Для обновления элемента DataGridView используйте пункт AddColumn ( ).
  2. Исключите появление ошибки при заполнении очередного поля таблицы пользователем, если оставлено обязательное поле пустым.

Для обработки исключений (некоторых ошибок) используется конструкция Try…Catch…End Try. Блок Try определяет фрагмент программы, в котором производится отслеживание ошибок. Если в этом фрагменте будет сгенерировано исключение, запустится Catch-блок, который представляет собой обработчик некоторого типа исключения.

Сохраните и закройте приложение. Откройте базу данных Университет и в конструкторе таблицы Студенты, сделайте поле ФИО обязательным. Опять откройте приложение и добавьте в процедуру-обработчик нажатия кнопки Сохранить следующий код:

1
2
3
4
5
Try
Me.СтудентыTableAdapter.Update(Me.УниверситетDataSet.Студенты)
Catch myException As Exception
MsgBox(myException.Message)
End Try

Запустите приложение. Добавьте новую запись, не заполняя поле ФИО, и щелкните кнопку Сохранить.

Контрольное задание:

Разработать приложение для загрузки и добавления данных в базу данных со следующими полями:

  1. «Автомобили» (модель, изготовитель, цена, цвет).
  2. Животные (название, отряд, место обитания).
  3. Расписание (предмет, время, преподаватель, группа).
  4. Косметика (наименования, тип, изготовитель, цена, примечания).
  5. Насекомые (название, цвет, крылья, лапки, копытцаJ).
  6. Банк (вкладчик, дата вклада, сумма, срок, процент).
  7. Магазин (продукт, цена, количество).
  8. Склад (товар, цена, количество, производитель).
  9. Расписание (предмет, время, преподаватель, группа).
  10. Преподаватели (фамилия, имя_отчество, дисциплина, злюка/добряк J).
Вопросы для самоконтроля:

  1. Какой элемент управления служит для обмена информацией через канал связи?
  2. Какое свойство элемента DataGridView устанавливает связь с таблицей?
  3. Какой элемент служит для кэширования изменений и добавлений?
  4. Для чего служат методы Fill и Update элемента TableAdapter?

* При использовании материалов обязательна ссылка на источник: Майер С.Ф., «MS Visual Basic 2008» — Учебно-методическое пособие : Южный федеральный университет. – Ростов-на-Дону, 2017. – 92 с.

3 комментария для “VB 18. Связь с базами данных”

  1. Огромное Спасибо, наконец-то получилось сохранить новую строку в БД. До этого пробовала несколько обучающих видео , не работало((

  2. Здравствуйте. При сохранении бд после удаления строки выходит ошибка «для элемента update требуется действительный deletecommand, при передаче коллекции DataRow c удаленными строками». В чем проблема?

Обсуждение закрыто.