Упражнение 3. Обработка ошибок



В практических задачах желательно, чтобы разрабатываемые приложения были более удобными в использовании и предоставляли подробное описание возникающих ошибок. В этом случае служба поддержки сможет быстрее справиться с проблемами.

В этом упражнении Вы добавите код в приложение предыдущего упражнения для обработки исключений соединения и будете показывать описание и уровень (severity level) для каждого типа ошибки SqlError, перехваченного исключением.

1. Импортируйте пространство имен:

using System.Data.SqlClient;

2. Добавьте после блока try обработчик блок catch для перехвата OleDbException. Пройдитесь в цикле по коллекции Errors и для каждого элемента создавайте окно сообщения, в котором отображается подробное описании ошибки и ее код:

catch (OleDbException XcpSQL)

       {

           foreach (OleDbError se in XcpSQL.Errors)

           {

               MessageBox.Show(se.Message,

               "SQL Error code " + se.NativeError,

               MessageBoxButtons.OK,

               MessageBoxIcon.Information);

           }

       }

3. Вместо универсального обработчика catch без параметров добавьте обработчик код для перехвата всех других типов исключений и отображения для них общего сообщения:

catch (Exception Xcp)

{

  MessageBox.Show(Xcp.Message, "Unexpected Exception",

                     MessageBoxButtons.OK, MessageBoxIcon.Error);

}

4. Внесите ошибки в строку подключения, например, измените имя провайдера, имя базы данных (ошибка 4060), имя сервера (ошибка 17) и любые другие ошибки на ваше усмотрение. Протестируйте работу программы. Изучите содержание диалоговых окон, информирующих об ошибках подключения.

Упражнение 4. Событие StateChange

При каждой смене состояния подключения (с открытого на закрытое, и обратно) объекты подключения становятся источником события StateChange. В этом упражнении Вы добавите в код предыдущего упражнения, который обрабатывает событие StateChange объекта OleDbConnection.

1. Добавьте обработчик события StateChange объекта connection в конструктор формы:

this.connection.StateChange += new

           System.Data.StateChangeEventHandler(

           this.connection_StateChange);

2. Создайте обработчик события StateChangeобъекта connection таким образом, чтобы он проверял текущее состояние соединения и делал доступными/недоступными соответствующие пункты меню:

private void connection_StateChange(object sender,                                              System.Data.StateChangeEventArgs e)

   {

       соединитьсяСБазойToolStripMenuItem.Enabled =

           (e.CurrentState == ConnectionState.Closed);

       оключитьСоединениеToolStripMenuItem.Enabled =

           (e.CurrentState == ConnectionState.Open);

   }

3. Протестируйте приложение. Проверьте, что в определенном состоянии подключения соответствующие пункты меню становятся недоступными.

Упражнение 5. Работа с классами конфигурации

Строки соединения можно сохранить в файлах конфигурации, что исключает необходимость внедрять их в код приложения. Файлы конфигурации представляют собой стандартные XML-файлы, для которых в платформе .NET Framework определен типовой набор элементов.

В пространстве имен System.Configuration есть классы, упрощающие извлечение строк подключения из файлов конфигурации во время выполнения. Предусмотрена возможность получить строку соединения программным путем по ее имени или по имени поставщика.

Для работы с файлами конфигурации на локальном компьютере используется класс ConfigurationManager .

Получение строк соединения во время выполнения

Выполняется итерация в коллекции ConnectionStringSettings и отображение свойств Name, ProviderName и ConnectionString в окне сообщения:

Name – имя строки соединения, сопоставляется с атрибутом name.

ProviderName – полное имя поставщика, сопоставляется с атрибутом providerName.

ConnectionString – строка соединения, сопоставляется с атрибутом connectionString.

1. Откройте приложение из прошлого упражнения.

2. Добавьте ссылку на библиотеку System.Configuration.dll и подключите требуемое пространство имен:

using System.Configuration;

3. Добавьте новый пункт Список Подключений в меню Файл.

4. Добавьте обработчик события click нового пункта меню и реализуйте в нем следующую функциональность:

a. Создайте экземпляр коллекции ConnectionStringSettings и укажите ему свойство ConnectionStrings класса ConfigurationManager:

       ConnectionStringSettingsCollection settings =

       ConfigurationManager.ConnectionStrings;

b. В цикле просмотрите коллекцию ConnectionStringSettings и выведете значения свойств Name, ProviderName и ConnectionString в окна сообщения:

       if (settings != null)

       {

           foreach (ConnectionStringSettings cs in settings)

           {

       MessageBox.Show("name = " + cs.Name);

       MessageBox.Show("providerName = " + cs.ProviderName);

       MessageBox.Show("connectionString = " + cs.ConnectionString);

           }

       }

5.  Запустите приложение. Выберете команду Список Подключений и изучите содержимое окон сообщений.


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

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






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