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

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

Правильное отключение (AdoConnection) [D7, MSSQL]


Страницы:   1 2

Stanislav ©   (2006-11-07 17:10:00) 

Мне нужно чтобы мое приложение выполнило запрос к серверу и отключилось. делаю так:
AdoDataSet.open;
...
AdoDataSet.close;
AdoConnection.Close
Но процесс на сервере все еще остается.
Как сделать чтобы он сразу отключался?


Stanislav   (2006-11-08 09:05:00) [21]

Все равно не получается, в таком варианте:

AdoDataSet1.Close;
ADOConnection1.Connected:=false;
try
AdoDataset1.Open;
except
AdoConnection1.Close;
ShowMessage('Сбой подключения')
end;


Stanislav   (2006-11-08 08:46:00) [22]

ЮЮ ©   (08.11.06 07:54) [10]
Правильно, сейчас попробую.

Хотя на самом деле код сложнее, на DataSet1.AfterOpen запускается доп. поток с перебором всех записей в датасете, и в нем закрывается Connection, но дополнительно я написал закрытие Коннекта перед открытием датасета на OnTimer.

AdoDataSet1.Close;
ADOConnection1.Connected:=false;
try
AdoDataset.Open;
except
ShowMessage('Сбой подключения')
end;


ЮЮ   (2006-11-08 07:54:00) [23]

у тебя до закрытия битого коннект просто дело не доходит:

AdoConnection.Open;
try
 AdoDataSet.open;
 ...
 AdoDataSet.close;
finally
 AdoConnection.Close;
end;


ЮЮ   (2006-11-08 07:14:00) [24]


> Есть выход пересоздавать Connection.

Достаточно переоткрыть ADOConnection.


Anatoly Podgoretsky   (2006-11-08 00:09:00) [25]

> MsGuns  (07.11.2006 21:39:07)  [7]

> Это все равно, что позвонить в скорую и сказать "попа болит"

Завяжи и лежи


MsGuns   (2006-11-07 21:39:00) [26]

>sniknik ©   (07.11.06 20:59) [6]
>с чего бы это? коннект все одно все  свое закроет, а его закрытие командой следом идет. если же намек на важный порядок изза какихто обработчиков, еще чего, то в данном конкретном, показаном (что упоминалось) случае датасет один.

Коннект коннекту рознь. Многое зависит от его опций.

>особенно приятно будет поизвращатся, именно сейчас, когда выяснили что причина/подоплека вопроса вовсе не в незакрытии коннекта сервером. и смысла рушить систему 0.

Если бы это сообщение было не от тебя, я вы не вылазил. "Кесарю-кесарево", в т.ч. и повышенная ответсвенность за слова.

>чем заниматься буквоедством, лучше бы обьяснил человеку его проблему. раз уж делать нечего, и тянет поговорить.

Из приведенного "кода" я не могу делать никаких выводов. Это все равно, что позвонить в скорую и сказать "попа болит"


sniknik   (2006-11-07 20:59:00) [27]

> Нет, не лишнее
с чего бы это? коннект все одно все  свое закроет, а его закрытие командой следом идет. если же намек на важный порядок изза какихто обработчиков, еще чего, то в данном конкретном, показаном(что упоминалось) случае датасет один.

> Не совсем верно. "Повлиять" все же можно. По крайней мере попытаться ;))
особенно приятно будет поизвращатся, именно сейчас, когда выяснили что причина/подоплека вопроса вовсе не в незакрытии коннекта сервером. и смысла рушить систему 0.
ага, и очень весело.

p.s. чем заниматься буквоедством, лучше бы обьяснил человеку его проблему. раз уж делать нечего, и тянет поговорить.


MsGuns   (2006-11-07 20:10:00) [28]

>sniknik ©   (07.11.06 17:18) [1]
>лишнее в этом, показанном, случае.

Нет, не лишнее

>> Как сделать чтобы он сразу отключался?
>никак, это мера против частого пересоздания обьектов, также и память не сразу отдается, и com обьекты спустя таймаут какойто уничтожаются, и т.д. любое действие с ресурсоемкими вещами...

Не совсем верно. "Повлиять" все же можно. По крайней мере попытаться ;))


Плохиш   (2006-11-07 19:00:00) [29]


> А в таком случае получается что после неудачного подключения
> подключится к базе уже невозможно.

Надо найти причину невозможности в твоей программеи устранить её.


Stanislav   (2006-11-07 17:34:00) [30]

Вопрос вот в чем
Я по таймеру (1 раз в 3 мин) обновляю данные в таблице (это монитор руководителя).
Хотелось бы чтобы при обрыве сети и последующим ее востановлении, монитор подключался к базе и работал дальше, даже если во время обрыва сети были неуспешные попытки подключиится.
А в таком случае получается что после неудачного подключения подключится к базе уже невозможно.
Есть выход пересоздавать Connection.
Но может есть другие предложения?


Stanislav   (2006-11-07 17:26:00) [31]

ясно спасибо.


sniknik   (2006-11-07 17:18:00) [32]

> AdoDataSet.close;
лишнее в этом, показанном, случае.

> Как сделать чтобы он сразу отключался?
никак, это мера против частого пересоздания обьектов, также и память не сразу отдается, и com обьекты спустя таймаут какойто уничтожаются, и т.д. любое действие с ресурсоемкими вещами...
а вдруг кто запросит, а оно уже есть...


Страницы:   1 2

Наверх

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