|
Почему всегда возвращается Open?
|
|||
---|---|---|---|
#18+
Истоки.... Программа при старте создает подключение к БД типа OledbConnection. Естесственно обрабатываются все исключения и прочее. Теперь делаем следующее: программа работает а мы вырубаем SQLServer например через службы (просто говорим ему стоп). Далее... Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20.
Процедура выполняется однако на ta.Fill(dt) получаем эксепшн.. Отсюда вопрос: как же проверять подключение? Как быть уверенным что оно (подключение) активно и запрос будет выполнен? ... |
|||
:
Нравится:
Не нравится:
|
|||
15.09.2012, 11:45 |
|
Почему всегда возвращается Open?
|
|||
---|---|---|---|
#18+
Ъыжсло, открывай соединение перед выполнением запроса, выполняй его и немедленно закрывай соединение. И почему ты используешь OleDbConnection вместо SqlConnection? ... |
|||
:
Нравится:
Не нравится:
|
|||
15.09.2012, 12:04 |
|
Почему всегда возвращается Open?
|
|||
---|---|---|---|
#18+
авторИ почему ты используешь OleDbConnection вместо SqlConnection Тут все просто: программа работает не только с MSSQL но и с другими СУБД. автороткрывай соединение перед выполнением запроса, выполняй его и немедленно закрывай соединение Согласен. Но увы и ах... Переписать за выходные пару сотен тысяч строк кода... А потом выловить все возможные глюки... ... |
|||
:
Нравится:
Не нравится:
|
|||
15.09.2012, 12:11 |
|
Почему всегда возвращается Open?
|
|||
---|---|---|---|
#18+
авторКак быть уверенным что оно (подключение) активно и запрос будет выполнен? Ъыжсло, таких гарантий вам и Путин не даст... Учитывая все вами сказанное - попробуйте просто переписать проперть ConnectionServiceLocal.Connection , где и проверять соединение... и если оно живо (можно попытаться выполнить элементарный селект select 1 ну плюс ваши проверки) - возвращать его, а если нет - переоткрывать... И вообще забавно... Вы хотите каких-то гарантий, но тогда зачем все эти проверки на nothing и state??? Похоже вам начхать... так-как эта ситуация не обрабатывается... Что-то мне подсказывакт, что можно выкинуть парусотен тысяч... и глюков станет меньше... И Вам повезло, что приложение трудится в один поток... ... |
|||
:
Нравится:
Не нравится:
|
|||
15.09.2012, 14:29 |
|
Почему всегда возвращается Open?
|
|||
---|---|---|---|
#18+
я кстати именно так и поступил. Вы невероятно догадливы... но к сожалению оно не трудится в один поток. Переписал класс Connection + сервисная функция которая в отдельном потоке проверяет соединение и если оно умерло пингует сервант. Методом выдергивания сетевого кабеля было проверено: программа пишет в базу если все ТРУ. иначе пишет в кэш (XML файл) и при появлении соединения - в базу. Возможно не слишком элегантно. Будем дорабатывать. Хотелось бы просто совет. авторВы хотите каких-то гарантий, но тогда зачем все эти проверки на nothing и state??? Чтоб не вылетело с ошибкой чо... ... |
|||
:
Нравится:
Не нравится:
|
|||
16.09.2012, 12:03 |
|
|
start [/forum/topic.php?fid=17&fpage=31&tid=1350244]: |
0ms |
get settings: |
9ms |
get forum list: |
12ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
58ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
44ms |
get tp. blocked users: |
2ms |
others: | 289ms |
total: | 437ms |
0 / 0 |