Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.06.11;
Скачать: CL | DM;

Вниз

проверка: доступна ли БД?   Найти похожие ветки 

 
OlegOren   (2006-04-18 16:05) [0]

как можно проверить есть ли соеденение в настоящий момент с БД с помощи
ADOConnection или ADODataSet?


 
Ega23 ©   (2006-04-18 16:07) [1]

СУБД?


 
sniknik ©   (2006-04-18 16:08) [2]

сделать запрос, любой но лучше поменьше.


 
OlegOren   (2006-04-18 16:10) [3]

MSSQL


 
OlegOren   (2006-04-18 16:11) [4]

sniknik ? но если я попытаюсь сделать запрос у меня выпадет ошибка, т.к. возможно оборвалась связь с БД.


 
OlegOren   (2006-04-18 16:12) [5]

ВОт как раз как мне проверить, что связь все еще нормальная(например сетевой кабель не вытащили) и спокойно сделать запрос.


 
OlegOren   (2006-04-18 16:18) [6]

Проблема такая, что когда все работает ADOConnection1.Connected = true, а когда обрываеться сетевой кабель значение ADOConnection1.Connected не становиться false. почему? мне самому надо проверять соединение и выстовлять это значение ADOConnection1.Connected как и положено?


 
Sergey13 ©   (2006-04-18 16:19) [7]

2 [6] OlegOren   (18.04.06 16:18)
У тебя обрыв кабеля - обычное явление? По несколько раз в день?


 
OlegOren   (2006-04-18 16:22) [8]

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


 
Sergey13 ©   (2006-04-18 16:28) [9]

2[8] OlegOren   (18.04.06 16:22)
>Вот и хочу облегчить себе работу.
А в чем облегчить то?
Обрамляй или все что можно try...except или [2] sniknik ©   (18.04.06 16:08), т.е. маленький тестовый запрос перед любым ответственным рабочим.


 
Ega23 ©   (2006-04-18 16:35) [10]

Сделай пинг, что-то типа
Select top 1 * from sysobjects
и выполни.


 
OlegOren   (2006-04-18 16:36) [11]

Sergey13 я делаю вот так, но из за чего все началось. в таком коде у меняв строке ADODataSet1.Refresh увеличивается память в оперативке метров на 5 и если это часто делать(например в каком нить мониторе состояния подключения к базе) оперативка
очень быстро кончается.

       try
               ADODataSet1.Refresh;
       except
               on E: Exception do
               begin
                       ADOConnection1.Connected := false;
                       ADODataSet1.Active := false;
               end;

       end;


 
Johnmen ©   (2006-04-18 16:44) [12]

Как уже сказали, мониторить соединение надо выполнением лёгкого запроса.
А не рефрешем набора данных....

ЗЫ

> ADOConnection1.Connected := false;
> ADODataSet1.Active := false;


странная последовательность...:)


 
Sergey13 ©   (2006-04-18 16:45) [13]

2[11] OlegOren   (18.04.06 16:36)
А зачем ?
>                       ADOConnection1.Connected := false;
>                       ADODataSet1.Active := false;

Тут ИМХО уместно месагу юзеру выдать, мол извини, брат, и закончить приложение.


 
Ega23 ©   (2006-04-18 16:46) [14]

Мне требовалось выводить иконку состояния работы сервера на экран, я делал так:
1. Запускал отдельный поток, в этом потоке создавал коннект
2. Пинговал базу раз в 5 секунд (см. [10]).
3. Если except - выводил сообщение на экран, мол потеря связи.


 
OlegOren   (2006-04-18 16:50) [15]

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

>А зачем ?
>>                       ADOConnection1.Connected := false;
потому,  что это значение не выстолятся(в фалз) при внешнем разрыве соединения ADOConnection1.Connected


 
OlegOren   (2006-04-18 16:51) [16]


> 2. Пинговал базу раз в 5 секунд (см. [10]).

а как ты пинговал ее?


 
OlegOren   (2006-04-18 16:51) [17]


> Ega23 ©

сорри всепонял


 
Sergey13 ©   (2006-04-18 16:55) [18]

2[15] OlegOren   (18.04.06 16:50)
>но можно же раз в минуту долбиться на сервак

Ну и долбись. Я мешаю? 8-)

>потому,  что это значение не выстолятся(в фалз) при внешнем разрыве соединения ADOConnection1.Connected

Аналогия - ты пытаешься попрощаться с телефонным собеседником после того, как он бросил трубку.


 
OlegOren   (2006-04-18 17:00) [19]


> Sergey13 ©  

но я же не хочу остановить соединение, я пытаюсь прочитать его состояние.
ADOConnection1.Connected - это же свойство, т.е. состояние переменной.
Логично : если нет соединения значит и свойство должно стоять false?
Просто весь долнейший код я основываю на состоянии этой переменной.


 
Ega23 ©   (2006-04-18 17:07) [20]


> Логично : если нет соединения значит и свойство должно стоять
> false?
> Просто весь долнейший код я основываю на состоянии этой
> переменной.


Но это же не означает, что сам TADOConnection "долбится" в базу и проверяет своё состояние. И если False, то данное свойство в False ставит.


 
OlegOren   (2006-04-18 17:18) [21]


> Ega23 ©

ясно.

ладно черт с ней с этой базой и соединением этим, не так уж это и важно. домой пошел я... у меня там молодая жена...:-)
с ней все четко const TADOWife.Connected = true
спасибо всем


 
Sergey13 ©   (2006-04-19 09:11) [22]

2[19] OlegOren   (18.04.06 17:00)
> но я же не хочу остановить соединение
Какое? Того, с которым ты работал, уже нет.
Я конечно не спец по мелко-мягким серверам, но это вроде везде так.



Страницы: 1 вся ветка

Текущий архив: 2006.06.11;
Скачать: CL | DM;

Наверх




Память: 0.52 MB
Время: 0.044 c
3-1145517957
Pavor
2006-04-20 11:25
2006.06.11
Добавление записи: Unknown Internal System Error


15-1147289111
_silver
2006-05-10 23:25
2006.06.11
Belgorod Mastak Party


2-1148062809
DuDiDan
2006-05-19 22:20
2006.06.11
База Данных


15-1147715052
Некто_
2006-05-15 21:44
2006.06.11
Нифига себе цена! =)


2-1148469281
pargo
2006-05-24 15:14
2006.06.11
Описание процедуры