Я понимаю, что нет никакого способа атомарна гарантии:Обработка Интернет Икота соединения и подключение баз данных
if(hasInternet)
doDatabaseCall();
Однако , что это правильный способ решения проблем с подключением при работе с DBConnection и DbCommand объектов в. NET мир? Я специально интересуюсь объектами MySqlConnection и MySqlCommand, но предполагаю (надеюсь), что его шаблон исключений совпадает с классами SQL Server.
Я бы предположил, что если интернет идет до вызова, conn.Open(), возникает событие MySqlException. Я также предполагаю, что это произойдет, если вы вызовете ExecuteReader или ExecuteNonQuery, и Интернет пойдет вниз.
Я не уверен, потому что документы для объектов MySql не говорят. Объекты SqlServer просто говорят, что это может привести к возникновению SqlException, что означает:
Исключение произошло при выполнении команды по заблокированной строке. Это исключение не создается при использовании Microsoft .NET Framework версии 1.0.
Это не похоже на проблемы с подключением ... Что бы я хотел сделать, это обработать исключение, подождать некоторое время и начать заново. Единственной целью моего приложения является выполнение этих вызовов в базе данных и его запуск на выделенной системе, поэтому повторение навсегда - действительно лучший вариант, который я считаю. Тем не менее, Я хотел бы различать исключения для подключения и другие виды исключений баз данных, возможно ли это?
Я провел некоторое тестирование и, похоже, работает так, как я предполагаю, но работает ли он во всех случаях? Например: команда была успешно отправлена на сервер базы данных, но соединение опускается до или во время возвращения результатов. Если он не работает во всех случаях с краем, мне придется: выполнить команду, запросить требуемое изменение состояния, выполнить следующую команду и т. Д. Важно, чтобы каждая команда проходила.
Я подключаюсь к порту на локальном хосте, который пересылается через SSH на удаленный сервер, если это имеет значение.