![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
проверка: доступна ли БД?
OlegOren © (2006-04-18 16:05:00)как можно проверить есть ли соеденение в настоящий момент с БД с помощи
ADOConnection или ADODataSet?
Sergey13 (2006-04-19 09:11:00) [1]2[19] OlegOren (18.04.06 17:00)
> но я же не хочу остановить соединение
Какое? Того, с которым ты работал, уже нет.
Я конечно не спец по мелко-мягким серверам, но это вроде везде так.
OlegOren (2006-04-18 17:18:00) [2]
> Ega23 ©
ясно.
ладно черт с ней с этой базой и соединением этим, не так уж это и важно. домой пошел я... у меня там молодая жена...:-)
с ней все четко const TADOWife.Connected = true
спасибо всем
Ega23 (2006-04-18 17:07:00) [3]
> Логично : если нет соединения значит и свойство должно стоять
> false?
> Просто весь долнейший код я основываю на состоянии этой
> переменной.
Но это же не означает, что сам TADOConnection "долбится" в базу и проверяет своё состояние. И если False, то данное свойство в False ставит.
OlegOren (2006-04-18 17:00:00) [4]
> Sergey13 ©
но я же не хочу остановить соединение, я пытаюсь прочитать его состояние.
ADOConnection1.Connected - это же свойство, т.е. состояние переменной.
Логично : если нет соединения значит и свойство должно стоять false?
Просто весь долнейший код я основываю на состоянии этой переменной.
Sergey13 (2006-04-18 16:55:00) [5]2[15] OlegOren (18.04.06 16:50)
>но можно же раз в минуту долбиться на сервак
Ну и долбись. Я мешаю? 8-)
>потому, что это значение не выстолятся(в фалз) при внешнем разрыве соединения ADOConnection1.Connected
Аналогия - ты пытаешься попрощаться с телефонным собеседником после того, как он бросил трубку.
OlegOren (2006-04-18 16:51:00) [6]
> Ega23 ©
сорри всепонял
OlegOren (2006-04-18 16:51:00) [7]
> 2. Пинговал базу раз в 5 секунд (см. [10]).
а как ты пинговал ее?
OlegOren (2006-04-18 16:50:00) [8]Sergey13 но можно же раз в минуту долбиться на сервак и проверять есть ли соединение и затем сообщитьпользователю что соединение мол появилось можно работать дальше.
>А зачем ?
>> ADOConnection1.Connected := false;
потому, что это значение не выстолятся(в фалз) при внешнем разрыве соединения ADOConnection1.Connected
Ega23 (2006-04-18 16:46:00) [9]Мне требовалось выводить иконку состояния работы сервера на экран, я делал так:
1. Запускал отдельный поток, в этом потоке создавал коннект
2. Пинговал базу раз в 5 секунд (см. [10]).
3. Если except - выводил сообщение на экран, мол потеря связи.
Sergey13 (2006-04-18 16:45:00) [10]2[11] OlegOren (18.04.06 16:36)
А зачем ?
> ADOConnection1.Connected := false;
> ADODataSet1.Active := false;
Тут ИМХО уместно месагу юзеру выдать, мол извини, брат, и закончить приложение.
Johnmen (2006-04-18 16:44:00) [11]Как уже сказали, мониторить соединение надо выполнением лёгкого запроса.
А не рефрешем набора данных....
ЗЫ
> ADOConnection1.Connected := false;
> ADODataSet1.Active := false;
странная последовательность...:)
OlegOren (2006-04-18 16:36:00) [12]Sergey13 я делаю вот так, но из за чего все началось. в таком коде у меняв строке ADODataSet1.Refresh увеличивается память в оперативке метров на 5 и если это часто делать(например в каком нить мониторе состояния подключения к базе) оперативка
очень быстро кончается.
try
ADODataSet1.Refresh;
except
on E: Exception do
begin
ADOConnection1.Connected := false;
ADODataSet1.Active := false;
end;
end;
Ega23 (2006-04-18 16:35:00) [13]Сделай пинг, что-то типа
Select top 1 * from sysobjects
и выполни.
Sergey13 (2006-04-18 16:28:00) [14]2[8] OlegOren (18.04.06 16:22)
>Вот и хочу облегчить себе работу.
А в чем облегчить то?
Обрамляй или все что можно try...except или [2] sniknik © (18.04.06 16:08), т.е. маленький тестовый запрос перед любым ответственным рабочим.
OlegOren (2006-04-18 16:22:00) [15]не то чтобы обрыв но и гнезда выдергивают потоянно. да и притом этот обрыв происходит не в соседнем кабинете а в 30 км. от меня. Вот и хочу облегчить себе работу.
Sergey13 (2006-04-18 16:19:00) [16]2 [6] OlegOren (18.04.06 16:18)
У тебя обрыв кабеля - обычное явление? По несколько раз в день?
OlegOren (2006-04-18 16:18:00) [17]Проблема такая, что когда все работает ADOConnection1.Connected = true, а когда обрываеться сетевой кабель значение ADOConnection1.Connected не становиться false. почему? мне самому надо проверять соединение и выстовлять это значение ADOConnection1.Connected как и положено?
OlegOren (2006-04-18 16:12:00) [18]ВОт как раз как мне проверить, что связь все еще нормальная(например сетевой кабель не вытащили) и спокойно сделать запрос.
OlegOren (2006-04-18 16:11:00) [19]sniknik ? но если я попытаюсь сделать запрос у меня выпадет ошибка, т.к. возможно оборвалась связь с БД.
OlegOren (2006-04-18 16:10:00) [20]MSSQL