Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

СРС / Подключенный режим / 4-Приложение, позвол модиф данные в базе

.docx
Скачиваний:
5
Добавлен:
28.06.2021
Размер:
385.1 Кб
Скачать

10

  1. Приложение Book.v4, позволяющее модифицировать данные в базе

Решаемая задача – модификация данных в базе (вставка новых записей, изменение и удаление существующих записей). Приложение работает в подключенном режиме. Реализуются: подключение к базе данных, создание объектов Connection, Command, типизированный DataReader и DataTable.

Достоинства приложения:

  • простота реализации;

  • эффективная работа за счет использования простого объекта DataReader, обеспечивающего быстрое последовательное однонаправленное чтение данных;

  • извлечение строго типизированных данных, допускающих чтение и правильное использование их в программе.

Недостатки приложения:

  • данные можно просматривать только в одном направлении;

  • используется постоянное соединение с базой данных (монопольный доступ объекта DataReader к активному соединению).

Модифицировать и передавать данные в подключенном режиме просто. Для обновления данных используют метод ExecuteNonQuery, который выполняет запрос, не создавая объект DataReader для приема его результатов.

Значения возвращаемых параметров и параметров вывода доступны по завершении вызова метода ExecuteNonQuery. Метод ExecuteNonQuery возвращает целое число. Для операторов UPDATE, INSERT и DELETE возвращается количество строк, обработанных запросом. Для прочих типов операторов возвращаемым значением является -1.

Для демонстрации возможности добавления, изменения и удаления записей в базе данных создадим новый проект Windows Forms Application с именем Book.v4, поместив его в решение Connected.

Проект содержит главную форму Form1. Установим новый заголовок окна формы – Book v4 (свойство Text). Добавим на форму элемент StatusStrip для отображения строки состояния. В StatusStrip добавим метку StatusLabel с именем lbRecordsCount (свойство Name) для отображения количества записей.

Добавим на форму элемент ToolStrip и создадим на нем четыре кнопки для добавления, изменения и удаления данных, а также для обновления содержимого DataGridView. Переименуем их соответственно в bNew, bEdit, bDelete, bRefresh (свойство Name).

В свободную часть формы добавим элемент DataGridView для отображения табличных данных. Этот элемент назовем dgvData (свойство Name) и зададим в его свойстве Dock значение Fill.

Теперь необходимо поместить на кнопки соответствующие пиктограммы. Эти пиктограммы можно взять в библиотеке VS 2012 Image Library, которая поставляется вместе с Visual Studio 2012 или скачивается с сайта Microsoft.

Файлы пиктограмм должны быть добавлены в файл ресурсов проекта Resources.resx. Необходимо в обозревателе решений в проекте Book.v4 найти этот файл и дважды щелкнуть по нему ЛКМ. Далее щелкнуть Добавить ресурс / Добавить существующий файл. Найти в библиотеке файл action_add_16xLG.png и добавить его в файл ресурсов проекта. Затем с помощью той же процедуры добавить графические файлы action_Cancel_16xLG, pencil_005_16xLG, refresh_16xLG.

После этого, выделив на форме кнопу bNew, обратимся к ее свойству Image и щелкнем кнопку с тремя точками. В окне Выбор ресурса установим переключатель Файл ресурсов проекта, выделим файл action_add_16xLG.png и щелкнем кнопку ОК.

Выделив на форме кнопу bEdit, обратимся к ее свойству Image и щелкнем кнопку с тремя точками. В окне Выбор ресурса установим переключатель Файл ресурсов проекта, выделим файл pencil_005_16xLG и щелкнем кнопку ОК.

Выделив на форме кнопу bDelete, обратимся к ее свойству Image и щелкнем кнопку с тремя точками. В окне Выбор ресурса установим переключатель Файл ресурсов проекта, выделим файл action_Cancel_16xLG и щелкнем кнопку ОК.

Выделив на форме кнопу bRefresh, обратимся к ее свойству Image и щелкнем кнопку с тремя точками. В окне Выбор ресурса установим переключатель Файл ресурсов проекта, выделим файл refresh_16xLG и щелкнем кнопку ОК.

В результате главная форма приложения примет вид, показанный на рисунке.

Для добавления и модификации записей таблицы Orders создадим отдельную форму. Можно вводить данные прямо в DataGridView, но в реальных приложениях хорошим стилем считается создание отдельной формы ввода данных.

Добавим в проект Book.v4 еще одну форму. Для этого щелкнем ПКМ на значке проекта в окне Обозреватель решений и в контекстном меню выберем Добавить / Форма Windows Зададим новое имя формы FOrder (свойство Name) и установим новый заголовок окна формы – Заказы (свойство Text).

Добавим на форму элемент panel1, зададим в его свойстве Dock значение Bottom (элемент прижмется к нижнему краю и растянется по ширине). Затем вручную мышью придадим элементу panel1 нужную высоту.

В оставшуюся свободной часть формы добавим элемент panel2, зададим в его свойстве Dock значение Fill (элемент займет всю свободную часть формы).

На элемент panel1 поместим две кнопки. Левую переименуем в bOK, правую – в bCancel (свойство Name). На кнопке bOK предусмотрим надпись OK, на кнопке bCancel – надпись Cancel (свойство Text). У кнопки bOK установим для свойства DialogResult значение OK, у кнопки bCancelзначение Cancel.

На элемент panel2 поместим пять полей ввода: два элемента TextBox для кода заказа и числа заказанных книг (tbOrderID, tbNumber), элемент ComboBox для выбора клиента (cbUser), элемент ComboBox для выбора книги (cbBook) и поле DateTimePicker для ввода даты и времени заказа (dtDateTime). Дизайн формы ввода данных показан ниже.

Для главной формы создадим обработчик события Load, в тело которого будем писать код загрузки типизированных данных из базы. Создадим также обработчики события Click для кнопок bNew, bEdit, bDelete, bRefresh.

На форме ввода и модификации данных для выбора клиента надо наполнить данными выпадающий список cbUser. Для этого следует выполнить запрос, вызвав хранимую процедуру User_Select без параметров, которая вернет список клиентов, и привязать данные (объект DataTable) к элементу ComboBox. Элемент ComboBox имеет свойство DataSource, значение которого задается так же, как и значение свойства DataSource элемента управления DataGridView.

При создании экземпляра DataTable мы присваиваем столбцам таблицы имена полей из объекта SqlDataReader. Свойство DisplayMember определяет, значениями какого столбца элемент ComboВох заполняет список, и принимает имя соответствующего столбца DataTable. В нашем случае это имя столбца u_surname объекта DataTable. Затем надо задать свойству ValueMember имя столбца user_ID объекта DataTable.

Аналогично для выбора книги надо наполнить данными выпадающий список cbBook. Для этого следует выполнить запрос, вызвав хранимую процедуру User_Select без параметров, которая вернет список клиентов, и привязать данные (объект DataTable) к другому элементу ComboBox.

В конструкторе формы ввода данных будет иметь два параметра: модифицируемая запись из базы данных, передаваемая как DataRow, и переменная типа bool, указывающая на действие – обновление записи или создание новой записи.

На главной форме Form1 загрузку данных в DataGridView выделим в отдельный метод LoadData(). Этот метод будет вызываться при первой загрузке данных в форму и при обновлении данных.