Совсем маленькую программу из предыдущего раздела можно использовать
для выполнения любого запроса к базе данных. Например, модифицируем
всего лишь одну строчку программного кода программы из предыдущего примера для добавления новой записи в таблицу БД. Для этого при создании экземпляра объекта command зададим SQL-запрос на вставку (insert) новой записи в таблицу БД.
Заметим, что в SQL-запросе мы сознательно обратились к таблице по имени [бд телефонов], т. е. со строчной буквы, хотя надо с прописной. Дело в том, что в именах таблиц следует точно указывать регистр символа, поскольку их поиск ведется с учетом регистра (case-sensitive search). Однако это не обязательно при наличии только одной таблицы с таким именем, поскольку при этом используется поиск без учета регистра (case-insensitive search).
Свойству connection объекта command следует дать ссылку на объект
Connection:
COMMAND.Connection = CONNECTION
Причем для добавления записи в таблицу БД такая ссылка обязательна в отличие от предыдущего примера, где мы создавали новую таблицу в существующей БД.
Программный код будет выглядеть так, как представлено в листинге 9.4.
Часто, отлаживая программный код на VB2010 (равно как и в других версиях VB), при работе с БД появляется необходимость проверки работы программы, например, создалась ли таблица в БД, добавилась ли запись в таблице БД, правильно ли сформирован SQL-запрос. Не обязательно запускать MS Access, чтобы выполнить SQL-запрос или проверить правильность его синтаксиса. Это можно сделать в среде VB. Для этого в пункте меню View выбираем команду Server Explorer (Обозреватель баз данных), далее в списке подключений указываем полный путь к нужной БД. Затем, щелкая правой кнопкой мыши на значке нужной таблицы, в контекстном меню выбираем пункт Retrieve Data. При этом в панели инструментов (Toolbar) появляется значок SQL, после щелчка по этому значку (или нажатия комбинации клавиш <Ctrl>+<3>) получим окно SQL-запроса. В этом окне мы можем задавать SQL-запрос, а затем, например, щелкая правой кнопкой мыши, либо проверять его синтаксис, либо выполнять.
|
Убедиться в работоспособности программы можно, открыв решение WritrelnBD.sln в папке WritrelnBD.
Пример 64. Чтение всех записей из таблицы БД с помощью объектов Command, DataReader и элемента управления DataGridView
Покажем, как легко, малой кровью, можно вывести таблицу базы данных на элемент управления DataGridView (сетка данных, т. е. таблица данных) с использованием тех же объектов из предыдущей программы command и DataReader. Замечу, что в предыдущих версиях VB, в частности VB.NET, элементом управления для вывода данных на сетку был DataGrid с похожими свойствами и методами.
Для решения этой задачи запустим VB2010, закажем новый проект New Project шаблона Windows Forms Application. Из панели Toolbox добавим в
проектируемую форму элемент управления DataGridView и растянем его на
всю форму. При обработке события загрузки формы FormiLoad напишем программный код, представленный в листинге 9.5.
Как видно из программы, она очень похожа на предыдущую. После выполнения SQL-команды создаем объект DataTabie, который в конце программного кода (см. предпоследнюю строку) задаем как источник (DataSource) для сетки данных DataGridViewi. Заполняем "шапку" таблицы, т. е. названия колонок,
МеТОДОМ Add.
Далее, как и в предыдущей программе, в цикле while заполняем ячейки таблицы. Фрагмент работы программы показан на рис. 9.14.
|
В этой таблице мы можем сортировать записи по любой из колонок, щелкая мышью на названиях соответствующих колонок. Можем редактировать (изменять) содержание ячеек, но в базу данных эти изменения не попадут (сохранения не будет).
Одно из ключевых преимуществ использования объекта DataReader — это его скорость и небольшое использование памяти. Однако применение циклического считывания данных сводит эти преимущества на нет.
Убедиться в работоспособности программы можно, открыв решение DataReaderBD2.sIn в папке DataReaderBD2.
Рис. 9.14. Отображение таблицы базы данных на элементе DataGridView
Пример 65. Чтение данных из БД в сетку данных DataGridView с использованием объектов Command, Adapter и DataSet
Рассмотрим пример чтения таблицы с помощью объекта Adapter из базы данных посредством выбора нужных данных и передачи их объекту DataSet. Очень удобно прочитать таблицу, записанную в DataSet, используя элемент управления DataGridView (сетка данных, т. е. таблица данных), указав в качестве источника данных для сетки DataGridView объект DataSet:
DataGridViewl.DataSource = DATASET
Поскольку нам нужен элемент управления DataGridView, мы создаем новый проект с экранной формой. Для этого, как обычно, запускаем VB2010, заказываем новый проект New Project шаблона Windows Forms Application. Из панели Toolbox добавляем в форму элемент управления DataGridView и растягиваем его на всю форму, как показано на рис. 9.15.
Далее при обработке события загрузки формы FormiLoad пишем программный код, представленный в листинге 9.6.
Рис. 9.15. Проектирование экранной формы
Как видно из текста программы, вначале создаем объект connection, передавая строку подключения. Затем, создавая объект command, задаем SQL-команду выбора всех записей из таблицы БД телефонов. Здесь мы можем задать любую SQL-команду, в комментарии приведен пример такой команды, которая содержит select и like: выбрать из таблицы БД телефонов только
|
записи, в которых поле ФИО начинается на "м". Оператор like используется для поиска по шаблону (pattern matching) вместе с символами универсальной
подстановки (метасимволами) "звездочка" (*) и "знак вопроса" (?). Строка шаблона заключена в одинарные кавычки. Заметим также, что большинство баз данных использует символ % вместо значка * в LiKE-выражениях.
Далее при создании объекта Adapter выполняем SQL-команду и при выполнении метода Fill заполняем объект DataSet таблицей, полученной в результате SQL-запроса. Затем указываем в качестве источника данных для сетки данных DataGridviewi объект DataSet. Этого оказывается достаточным для вывода на экран результатов SQL-запроса (рис. 9.16).
Рис. 9.16. Вывод результата SQL-запроса
Так же, как и при использовании объекта DataReader в предыдущем примере, в полученной таблице мы можем сортировать записи по любой из колонок. Можем редактировать (изменять) содержание ячеек, но в базу данных эти изменения не попадут (сохранения не будет).
Заметим, что здесь с помощью визуального проектирования выполнено только перетаскивание в форму сетки данных DataGridView, остальное сделано программно, что обеспечивает большую гибкость программы.
Убедиться в работоспособности программы можно, открыв решение DataSetGrid.sln в папке DataSet_Grid.