![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Правильное отключение (AdoConnection) [D7, MSSQL]
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 обьекты спустя таймаут какойто уничтожаются, и т.д. любое действие с ресурсоемкими вещами...
а вдруг кто запросит, а оно уже есть...