-
Ситуация в следующем:
1. Есть приложение для работы с базой данных в сети через ADOConnection -> ADOQuery->DAtaSource
2. База данных - MSSQL.
Соеденение проходит успешно и выполнение первого SQL запроса проходит удачно, но через некоторое время если повторить запрос SQL то пишет ошибка соеденения! Вопрос как переподключить или что можно предпринять в данной ситуации?
-
> Axe (29.06.2010 11:49:00) [0]
1. Ошибка в 17 строке
2. Используй TAdoDataset
3. Пригласи программиста
4. Пригласи телепата
-
> выполнение первого SQL запроса проходит удачно
и вот тут
showmesage(ADOConnection.ConnectString) +
showmesage(ADOQuery.sql.text)
> если повторить запрос SQL то пишет ошибка соеденения!
и тут
что пишет +
showmesage(ADOConnection.ConnectString) +
showmesage(ADOQuery.sql.text)
в студию
-
> 12 (29.06.2010 12:24:02) [2]
А почему ты складываешь две процедуры, что ты этим сказать то хотел?
-
> то ты этим сказать то хотел?
просил привести
ADOConnection.ConnectString
ADOQuery.sql.text
и что пишет
-
Это ты так партизана раскалываешь :-)
-
Provider=SQLOLEDB.1;Password=***;Persist Security Info=True;User ID=sa;Initial Catalog=lin2db;Data Source=127.0.0.1;Use Procedure for Prepare=1;Auto Translate=True;Packet Size=4096;Workstation ID=AXE;Use Encryption for Data=False;Tag with column collation when possible=FalseSELECT uid, account,last_login,last_logout FROM user_account WHERE account like 'goldeneye%'
Выкладываю ADOConnection.ConnectString+
ADOQuery.sql.text
-
а теперь тоже самое и текст ошибки, когда эта ошибка возникает
-
Текст тотже выдает а ошибку то ошибка сеть, или ошибка подключения
-
Соединение, конечно же, в дизайне :)
-
Поподробней? Что то описал непонятно?
-
В Object Inspector у TADOConnection стоит Active=true ?
-
Да я при открытие формы активирую соединение, первый же запрос нормально проходит это потом как будто соединение закрывается
Если делать при новом запросе пересоединение т.е TADOConnection.close и TADOConnection.open то нормально запрос проходит, как то можно обнаружить что потерянно соединение?
-
Да я при открытие формы активирую соединение, первый же запрос нормально проходит это потом как будто соединение закрывается
Если делать при новом запросе пересоединение т.е TADOConnection.close и TADOConnection.open то нормально запрос проходит, как то можно обнаружить что потерянно соединение?
-
> Axe (29.06.10 18:02) [8]
>
> Текст тотже выдает а ошибку то ошибка сеть, или ошибка подключения
>
Ну когда же вы, троешники, научитесь приводить в сабже или в ответах текст сообщения об ошибке без перевода на ...
:(
-
так не пойдет
кинь на форму еще одно мемо и пиши вместо ADOQuery.open
OpenQ(ADOQuery)
procedure OpenQ(var AQ: tadoquery);
begin
memo.lines.add(AQ.sql.text);
memo.lines.add(AQ.connection.connectstring);
try
AQ.Open;
except
on E:Exception do
begin
memo.lines.add(E.ClassName);
memo.lines.add(E.Message);
// Raise; // по желанию
end;
end;
end;
и показывай текст из мемо
ps
в коде возможны опечатки - писал сразу сюда
-
> как то можно обнаружить что потерянно соединение?
у TADOConnection заполнены Showmessge('оп па'); на
(Before-зачеркнуто :) )Disconnect
AfterDisconnect
-
> у TADOConnection заполнены Showmessge('оп па'); на
> (Before-зачеркнуто :) )Disconnect
> AfterDisconnect
это не поможет, т.к. метод ничего не знает о проблемах сети до того как не проверит ее действием.
а это сработает если где нибудь в той же программе будет - ADOConnection.Active:= false;
+ здесь можно не проверять ошибки сети, т.к. > Data Source=127.0.0.1;, здесь только ошибки в программе (или настройка сервера mssql - разрывать соединение после исполнения запроса... если такая есть конечно. что там администраторы по этому поводу скажут?).
-
Provider=SQLOLEDB.1;Password=***;Persist Security Info=True;User ID=sa;Initial Catalog=lin2db;Data Source=127.0.0.1;Use Procedure for Prepare=1;Auto Translate=True;Packet Size=4096;Workstation ID=AXE;Use Encryption for Data=False;Tag with column collation when possible=False
SELECT uid, account,last_login,last_logout FROM user_account WHERE account like 'goldeneye%'
Provider=SQLOLEDB.1;Password=***;Persist Security Info=True;User ID=sa;Initial Catalog=lin2db;Data Source=127.0.0.1;Use Procedure for Prepare=1;Auto Translate=True;Packet Size=4096;Workstation ID=AXE;Use Encryption for Data=False;Tag with column collation when possible=False
EOleException
Ошибка подключения
-
Ребят сразу оговорюсь, IP не локальный, это просто я поменял так как просили сервер не светит
-
а отсутствие запроса в случае с ошибкой это тоже "оговорка"?
> Это ты так партизана раскалываешь :-)
это не партизан, это провокатор...
-
Незнаю вызов такой же а запрос не выводит
-
во втором случае нет текста запроса
ищи где текст может менятся
напиши procedurу по смене текста запроса и делай не Q.SQL.text:=
(и не Q.SQL.Add())
А только через эту процедуру, и сигналь как только текст станет = пусто