Одно из основных четырех действий над данными в БД (select, insert,
update и Delete) является модификация (update, обновление) данных. Автор поставил задачу написать маленькую программу для обновления записей в таблице базы данных, но с большим удобством (гибкостью) управления программным кодом.
Рассматриваемая в данном примере программа имеет форму, сетку данных DataGridView, в которую из базы данных читается таблица при нажатии кнопки Читать из БД. Пользователь имеет возможность редактировать данные в этой таблице, после чего, нажав кнопку Сохранить в БД, данные в базе данных будут модифицированы, т. е. заменены новыми.
Для написания этой программы запускаем VB2010, заказываем новый проект New Project шаблона Windows Forms Application. Из панели Toolbox добавляем в форму элемент управления DataGridView и две командные кнопки. Программный код программы представлен в листинге 9.7.
Вначале импортируем (imports) Пространство имен System.Data.OleDb, ЭТО
обеспечит более короткие объявления объектов и манипулирования ими. Далее, как видно, мы имеем три процедуры обработки событий: загрузки формы, щелчок на кнопке Читать из БД и щелчок на кнопке Сохранить в БД.
Чтобы объекты DataSet, DataAdapter, Connection, CommandBuilder И Command
были видны в этих трех процедурах, объявляем эти объекты внешними внутри класса Forml.
При программировании чтения из базы данных на сетку DataGridviewi мы использовали объект CommandBuilder для демонстрации возможности чтения данных с помощью этого объекта, хотя могли бы организовать чтение из базы данных на сетку DataGridviewi так, как это было показано в предыдущих программах. Фрагмент работы программы после чтения из базы данных представлен на рис. 9.17.
Рис. 9.17. Фрагмент работы программы обновления данных
Представляет интерес программирование модификации записей базы данных. Эта возможность программирована при обработке события "щелчок мышью
на кнопке" Сохранить в БД. Здесь свойству CommandText присвоено значение текста SQL-запроса. В качестве заменителей параметров используются вопросительные знаки. Как видно, в данном SQL-запросе имеют место три вопросительных знака. Этим трем вопросительным знакам соответствуют три параметра, которые должны указываться именно в порядке следования вопросительных знаков. Эти параметры задаем с использованием метода
COMMAND. Parameters.Add. Здесь указываем ИМЯ ПОЛЯ (например, "Номер телефона"), тип, длину параметра и значение по умолчанию. Заметим, что третий параметр ("Номер п/п") задается как новый, поскольку он не должен подле-
жать редактированию со стороны пользователя, а устанавливаться автоматически, независимо от пользователя.
Далее в блоке Try...Catch вызываем непосредственно метод da.update, который возвращает количество (koi) обновленных записей. В случае неудачного обновления обрабатывается исключительная ситуация Exception, объект Exception обеспечивает соответствующее сообщение о недоразумении.
Убедиться в работоспособности программы можно, открыв решение Update.sin в папке Update.
Пример 67. Удаление записей из таблицы БД с использованием SQL-запроса и объекта Command
Можно также удалять записи (строки из таблицы БД), формируя в программном коде соответствующий SQL-запрос, передаваемый в объект Command. Именно объект Command обеспечивает привязку SQL-выражения к соединению с базой данных. Напишем самый простой пример такой программы.
Для этого запустим VB2010 и закажем новый проект New Project. Экранная
форма нам в данном случае не нужна, поэтому выбираем, как и в некоторых предыдущих примерах, шаблон Console Application. Для того чтобы во время выполнения данной программы не видеть черного DOS-экрана, в меню Project выберем команду ConsoleApplicationl Properties и на вкладке Application укажем в раскрывающемся списке Application type тип приложения Windows Forms Application. Чтобы иметь доступ к функции
MessageBox.show (хотя можем воспользоваться MsgBox), добавим к проекту ссылку на динамическую библиотеку Forms.dll. Для этого выберем" пункты меню Project | Add Reference и на вкладке .NET дважды щелкнем на ссылке на библиотеку System.Windows.Forms.dll. Отметим, что при этом на вкладке, открываемой командой Project | Properties | References, появилась соответствующая этой библиотеке ссылка.
Далее напишем следующий программный код (листинг 9.8).
Здесь при создании объекта command задан SQL-запрос на удаление (Delete)
всех записей, содержащий в поле ФИО фрагмент текста "Vi*", причем строчные и прописные буквы являются равнозначными, т. е. будут удалены записи, содержащие "vi*", "vi*M, "vi*" и прочие комбинации. Таким образом, поиск записей ведется без учета регистра (case-insensitive search).
Замечу, что здесь для выполнения команды SQL использован метод ExecuteNonQuery. Он возвращает в переменную i количество удаленных записей. Если i = о, значит, записи с таким контекстом не найдены и ни одна запись не удалена.
Убедиться в работоспособности программы можно, открыв решение DelFromDB.sln в папке DelFromDB