Необходимые знания:
- DataSet – объект Набор данных, состоит из коллекции таблиц и связей; при организации связи с БД он формируется автоматически и служит для кэширования данных из БД, отслеживает и хранит произведенные изменения.
- Binding Source – скрытый элемент управления, который связывается с БД посредством DataSet. Инкапсулирует источник данных для формы.
- DataGridView – элемент управления для просмотра записей базы данных. Связывается с конкретной таблицей БД через элемент Binding Source.
- TableAdapter – скрытый элемент, добавляется автоматически при связывании элемента DataGridView и служит для обмена информацией через созданный канал связи. Его метод Fill заполняет значениями элемент DataSet, служащий для кэширования данных. Его метод Update позволяет обновить произведенные в проекте изменения в самой БД.
- Binding Navigator – элемент управления, служащий для навигации по базе данных. Связывается с Binding Source.
Выполнение:
- Создайте новый проект.
- С помощью приложения Access 2007 создайте базу данных Университет из одной таблицы Студенты с тремя полями: ФИО, Факультет и Группа. Заполните несколько записей произвольными данными и сохраните базу данных. Закройте приложение Access
- Вернитесь к программе. В меню Data (Данные) выберите пункт Add New Data Source (Добавить новый источник данных). В открывшемся окне выберите пункт Database (База данных) → Next (Далее). Щелкните кнопку NewConnection (Создать подключение) → пункт Microsoft Access DatabaseFile. Щелкните по кнопке Browse (Обзор) и выберите файл созданной базы данных. Чтобы проверить соединение используйте кнопку Test Connection (Проверить подключение). Щелкните ОК и Next (Далее). В появившемся окне о копировании файла данных следует щелкнуть по кнопке Нет.
- Отметьте флажок с пунктом Tables (Таблицы) и Vews (Представления), чтобы присоединить все таблицы базы данных. Щелкните Finish (Готово).
- Добавьте панель Server Explorer для работы с соединениями, войдя в меню View (Вид) → Server Explorer (Обозреватель баз данных). Переключитесь на панель и посмотрите на добавленное соединение.
- На панели ToolBox (Инструменты) выберите элемент Binding Source (это скрытый элемент), формирующий данные из базы данных для формы. Для его свойства DataSourсe установите значение УниверситетDataSet, чтобы связать его с базой данных.
- Добавьте элемент DataGridView для просмотра записей базы данных. Для его свойства DataSource установите значение СтудентыBindingSource. Щелкните на стрелочке, находящейся над элементом и выберите пункт PreviewData (Просмотреть данные). Щелкните по кнопке Preview (Просмотр). Запустите проект.
- Дважды щелкните на пустом месте дизайна формы и запрограммируйте код для события Load формы (по загрузке формы):
Me.СтудентыTableAdapter.Fill(Me.УниверситетDataSet.Студенты) |
Элемент TableAdapter добавляется автоматически при связывании элемента DataGridView и служит для обмена информацией через созданный канал связи. Его метод Fill заполняет значениями элемент DataSet, служащий для кэширования данных.
- Добавьте элемент Binding Navigator, служащий для навигации по базе данных. Для его свойства BindingSource установите значение СтудентыBindingSource. Запустите приложение. Попробуйте использовать панель навигации для добавления новой записи.
- Если Вы попробуете перезапустить приложение, то добавленные записи не сохранятся.
- Необходимо добавить кнопку Сохранить. В процедуру обработки события Click кнопки добавьте следующий код:
Me.СтудентыTableAdapter.Update(Me.УниверситетDataSet.Студенты) |
Таким образом, все изменения, накопленные в DataSet, сохраняются (обновляются при помощи метода Update) в базе данных посредством элемента TableAdapter и его метода Update.
- Добавьте новую запись и щелкните кнопку Сохранить. Еще раз запустите приложение и отладьте его. Все данные сохранились!
- Сохраните проект.
- Расширьте приложение так, чтобы в базе данных сохранялись поля Отделение и Курс, соответственно добавив их сначала в саму базу данных. Для добавления полей в элемент DataSet выберите его в окне SolutionExplorer, и в контекстном меню элемента выберите пункт Configure. Добавьте поля в SQL-запрос. Для обновления элемента DataGridView используйте пункт AddColumn ( ).
- Исключите появление ошибки при заполнении очередного поля таблицы пользователем, если оставлено обязательное поле пустым.
Для обработки исключений (некоторых ошибок) используется конструкция 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 |
Запустите приложение. Добавьте новую запись, не заполняя поле ФИО, и щелкните кнопку Сохранить.
Разработать приложение для загрузки и добавления данных в базу данных со следующими полями:
- «Автомобили» (модель, изготовитель, цена, цвет).
- Животные (название, отряд, место обитания).
- Расписание (предмет, время, преподаватель, группа).
- Косметика (наименования, тип, изготовитель, цена, примечания).
- Насекомые (название, цвет, крылья, лапки, копытцаJ).
- Банк (вкладчик, дата вклада, сумма, срок, процент).
- Магазин (продукт, цена, количество).
- Склад (товар, цена, количество, производитель).
- Расписание (предмет, время, преподаватель, группа).
- Преподаватели (фамилия, имя_отчество, дисциплина, злюка/добряк J).
- Какой элемент управления служит для обмена информацией через канал связи?
- Какое свойство элемента DataGridView устанавливает связь с таблицей?
- Какой элемент служит для кэширования изменений и добавлений?
- Для чего служат методы Fill и Update элемента TableAdapter?
Огромное Спасибо, наконец-то получилось сохранить новую строку в БД. До этого пробовала несколько обучающих видео , не работало((
на здоровье;)
Здравствуйте. При сохранении бд после удаления строки выходит ошибка «для элемента update требуется действительный deletecommand, при передаче коллекции DataRow c удаленными строками». В чем проблема?