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