Поставим задачу вывода таблицы базы данных MS Access в экранную форму с возможностью редактирования базы данных, как мы это сделали для базы данных SQL Server. Разница будет состоять лишь в том, что мы не будем копировать базу данных в наш проект, а подключимся к существующей базе данных. Сразу скажем, что данная задача решается аналогично.
Запустим VB2010 и закажем новый проект шаблона Windows Forms Application, укажем имя проекта— BD_mdb. Откроется новый проект Windows Forms. В пункте меню Data (Данные) щелкнем пункт Add New Data Source, при этом запустится Data Source Configuration Wizard (Мастер настройки источников данных). Выберем Database (База данных) и нажмем кнопку Next. Далее после выбора модели Dataset и нажатия кнопки Next нажимаем кнопку New
Connection (Новое подключение).
Откроется диалоговое окно Add Connection (Добавить подключение). В этом диалоговом окне проверяем, является ли источник данных (Data source) Microsoft Access Database File (OLE DB). Если нет, то нажимаем кнопку Change и выбираем Microsoft Access Database File в диалоговом окне Change Data Source, а затем нажимаем кнопку ОК.
Щелкнув на кнопке Browse, переходим в место сохранения базы данных vic.mdb, далее щелкнем на значке файла базы данных и на кнопке Открыть. Нажмем кнопку ОК, чтобы закрыть диалоговое окно Add Connection, затем в мастере настройки источников данных нажмем кнопку Next. Если будет предложено копировать файл данных в проект, нажмите кнопку Нет.
Опять нажмите кнопку Next. На следующей странице мастера необходимо установить флажок возле всех объектов базы данных, при этом имя объекта DataSet будет vicDataSet. Нажимаем кнопку Finish для продолжения. Переходя в пункт меню Data | Show Data Sources получим в окне Data Sources узлы объектов базы, показанные на рис. 9.8.
Рис. 9.8. Узлы объектов базы данных
Теперь перетащим узел БД телефонов из окна Data Source в проект экранной формы. При этом некоторые элементы управления автоматически добавятся в форму, также будут созданы некоторые компоненты и добавлены в область компонентов под формой. Появится элемент управления DataGridView, который будет отображать строки и столбцы таблицы, и элемент управления для переходов (AddressesBindingNavigator). Кроме того, система создает компоненты, которые подключаются к базе данных, управляют извлечением и обновлением данных и хранят данные в локальном объекте DataSet (AddressesBindingSource, AddressesTableAdapter и FirstDatabaseDataSet соответственно).
Нажмем клавишу <F5> для запуска приложения. Данные из таблицы телефонов отображаются в элементе управления DataGridView в форме, как показано на рис. 9.9.
Рис. 9.9. Отображение таблицы на элементе управления DataGridView
Можно использовать элементы управления в BindingNavigator в верхней части формы для перехода между строками, можно даже добавлять или удалять записи. Можно также изменять записи, изменяя данные, отображаемые в сетке, но эти изменения не будут сохранены до тех пор, пока не будет нажата кнопка сохранения (Save Data).
Как видите, мы не написали ни одной строчки программного кода. Среда VB2010 автоматически сгенерировала программный код для управления
представляемой программой. Этот программный код можно просмотреть, открыв файл проекта Form 1.Designer.vb.
Убедиться в работоспособности программы можно, открыв файл решения BDmdb.sln в папке BDmdb.
Пример 60. Чтение всех записей из таблицы БД MS Access на консоль с помощью объектов Command и DataReader
Напишем программу, которая минимальным количеством строк программного кода выводит на экран все записи (т. е. все строки) таблицы базы данных. При этом воспользуемся наиболее современной технологией ADO.NET. Технология ADO.NET — это преимущественно 4 объекта. Объект connection обеспечивает соединение с базой данных. Объект command обеспечивает привязку SQL-выражения к соединению с базой данных. А с помощью объектов
DataSet И DataReaders МОЖНО просмотреть результаты запроса.
Здесь и далее мы рассмотрим четыре основных действия над базой данных:
select (выборка записей из таблицы БД), insert (вставка записей), update
(модификация записей в таблице БД), Delete (удаление некоторых записей из таблицы).
Для этого запустим VB2010 и щелкнем на пункте New Project. Форма нам в данном случае не нужна, поэтому выбираем шаблон Console Application. Мы хотим вывести на экран простейшим способом таблицу. Если мы будем выводить ее при помощи функции MessageBox.show, то ровных колонок в окне MessageBox.show мы не получим, поскольку буквы, реализованные в этой функции, имеют разную ширину. Обычно в этом случае для вывода таблиц используют шрифт Courier New или Consolas, но объект MessageBox не содержит возможностей смены шрифта (также как и MsgBox). Поэтому, идя по самому короткому пути, выводим таблицу из базы данных на консоль, т. е. на черный экран DOS. Здесь реализован моноширинный шрифт, где все символы имеют одинаковую ширину. Например, буква "Ш" и символ "." (точка) имеют одинаковую ширину, следовательно, колонки в построенных таблицах будут ровными.
Теперь на вкладке Modulel.vb напишем текст программы из листинга 9.1.
Как видно, вначале создаем объект connection и передаем ему строку соединения. В строке соединения полный доступ к MDB-файлу заключен в двойные кавычки. Это сделано для того, чтобы корректно читались длинные имена папок и файлов, содержащие пробелы.
Далее создаем объект command и передаем ему простейшую SQL-команду:
Select * From [БД телефонов]
То есть выбрать все записи из таблицы [БД телефонов]. Название таблицы в SQL-запросе заключено в квадратные скобки из-за пробела в имени таблицы. Заметьте, что в комментарии указаны возможные варианты SQL-запроса: сортировать записи по колонке ФИО (order by фио) и по колонке (order by 'Номер п/п').
Затем, используя объект DataReader, выполняем SQL-команду. В комментарии указано, что при этом можно было бы закрыть соединение cioseConnection. Далее в цикле построчно читаем таблицу базы данных. При работе DataReaders в памяти хранится только одна строка (запись) данных.
Объект DataReaders имеет булеву функцию Read, которая возвращает True,
если существует следующая строка данных, и False, если такие строки уже исчерпались. Причем с помощью DataReaders невозможно заранее узнать количество записей в таблице.
Результат работы программы показан на рис. 9.10.
Рис. 9.10. Отображение таблицы базы данных на консоли
Таким образом, мы получили простейшую программу для просмотра таблицы базы данных. С ее помощью можно только просматривать данные, но нельзя их редактировать.
Убедиться в работоспособности программы можно, открыв решение DataReaderBDl.sIn в папке DataReaderBD 1.