Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

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


Страницы:   1 2

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


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо