Упражнение 3. Выполнение транзакций



Транзакция состоит из одной команды или группы команд, которые выполняются как пакет. Транзакции позволяют объединить несколько операций в одну единицу работы. Если в какой-либо точке транзакции возникает ошибка, может быть выполнен откат всех обновлений к их состоянию до начала транзакции. Для выполнения локальной (состоит из одной фазы и обрабатывается непосредственно базой данных) транзакции каждый поставщик данных платформы .NET Framework имеет свой собственный объект Transaction.

В этом упражнении инициируется транзакция с помощью метода BeginTransaction объекта Connection. После начала транзакции при помощи свойства Transaction объекта Command к ней прикрепляется команда и затем в зависимости от успеха или ошибки компонентов транзакция фиксируется или откатывается.

1. Откройте приложение, построенное в предыдущем упражнении.

2. Добавьте на форму кнопку Button. Для свойства Text укажите значение Транзакция.

3. Реализуйте в обработчике события Click новой кнопки следующую функциональность:

a. Создайте объект соединения – объект класса OleDbConnection, назначьте строку подключения и откройте соединение:

OleDbConnection connection = new OleDbConnection(testConnect);

connection.Open();

b. Вызовите метод BeginTransaction() объекта соединения OleDbConnection для отметки начала транзакции. Данный метод возвращает ссылку на транзакцию. Эта ссылка назначается объектам OleDbCommand, прикрепленным к транзакции:

           OleDbTransaction OleTran = connection.BeginTransaction();

c. Создайте объект OleDbCommand, с помощью которого будет выполняться SQL-команда:

           OleDbCommand command = connection.CreateCommand();

d. Свяжите транзакцию с командой. Для этого объект транзакции поместите в свойство Transaction объекта команды:

           command.Transaction = OleTran;

e. В try-блоке реализуйте следующее: свойству commandText укажите запрос, который нужно выполнить (команда INSERT, которая вставляет в таблицу Products  название нового продукта). Для выполнения команд, не возвращающих результатов, а изменяющих данные или вставляющих данные в таблицы, используйте метод ExecuteNonQuery(). Для сохранения изменений, сделанных внутри транзакции, вызовите метод Commit() объекта OleDbTransaction. Итоговый код для вставки двух строк будет следующим:

           try

           {

           command.CommandText =

         "INSERT INTO Products (ProductName) VALUES('Wrong size')";

               command.ExecuteNonQuery();

           command.CommandText =

          "INSERT INTO Products (ProductName) VALUES('Wrong color')";

               command.ExecuteNonQuery();

 

               OleTran.Commit();

       MessageBox.Show("Both records were written to database");

           }

f. В catch-обработчике вызовите окно с сообщением об ошибке в случае ее возникновения:

           catch (Exception ex)

           {

              MessageBox.Show(ex.Message);

               ...

           }

g. В этом же блоке catch вызовите метод Rollback() для отмены изменений, т. е. отката транзакции. Метод вызовите во вложенном блоке try:

               try

               {

                   OleTran.Rollback();

               }

               catch (Exception exRollback)

               {

                   MessageBox.Show(exRollback.Message);

               }

h. Закройте соединение:

         connection.Close();

4. Запустите и протестируйте приложение. По клику кнопки Транзакция в таблицу продуктов добавляются новые строки. Проверьте это с помощью кнопки Список продуктов.

5. Внесите ошибку в код вставки строк в таблицу, например, неправильное название столбца или таблицы. Повторите запись строк в таблицу и убедитесь в откате транзакции.

               

Практическое занятие 3.  Подключение к данным с помощью IDE

На практике при разработке приложений, предназначенных для работы с базой данных удобно использовать возможности интегрированной среды разработки и компоненты панели Toolbox.

Упражнение 1. Создание подключения к БД в Server Explorer

  В этом упражнении описывается процесс создания узла Data Connection в Server Explorer.

1. Создайте новое WinForms-приложение (назовите его DSConnect).

2. С помощью меню View откройте окно Server Explorer.

3. Щелкните правой кнопкой мыши узел Data Connections и выберите команду Add Connection. При первом подключении появится диалоговое окно Change Data Source.

4. В окне Data source выберите источник данных – Microsoft SQL Server. В соответствии с выбранным источником данных, выпадающий список Data provider заполняется подходящими провайдерами данных. Выберите .NET Framework Data Provider for SQL Server.

5. В окне Add Connection в поле Server name выберите свой сервер или введите имя вручную.

6. Выберите метод аутентификации для доступа к серверу – Windows.

7. Выберите требуемую базу данных – Northwind. Проверьте подключение и в случае удачного исхода нажмите OK.

8. После создания подключения просмотрите его свойства в окне Properties.


Дата добавления: 2019-02-26; просмотров: 189; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!