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

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

Подскажите, в потоке нельзя подсоединиться к SQL Server? [D7]


Layner ©   (2003-08-25 16:01:00) 

Без потока соединяет, тоже самое в потоке, пишет "EOleException, не был произведён вызов CoInitialize.." Подскажите, в чём дело может быть???
Соединяюсь так (без потока здесь всё нормально работает):

ADOConnection1.ConnectionString:="Provider=SQLOLEDB.1;Password="+sg.Ce lls[3,i]+";Persist Security Info=True;User ID="+sg.Cells[2,i]+";Data Source="+sg.Cells[1,i]+"";
ADOConnection1.Connected:=True;


Вызываю в Execute, сли этот код ремю, то ошибок ни каких не выдаёт.


Digitman   (2003-08-27 14:18:00) [1]

вот это вот

Form1.sg.Cells[3,i]

недопустимо использовать в доп.код.потоке без синхронизации с осн.код.потоком


Layner   (2003-08-27 11:18:00) [2]

Quest, спасибо большущее, с KeepConnection что то действительно вышло, у меня по умолчанию стоял False. Я ещё подумываю на сеть, -когда нормально работает, когда не нормально, это конечно маловероятно.


Quest   (2003-08-27 10:49:00) [3]

проверь и при необходимости выстави
ADOConnection1.KeepConnection:=True
ADOConnection1.ConnectOptions:=

... и попробуй использовать не Form1.ADOQuery1.ExecSQL
а
TAdoCommand


Layner   (2003-08-27 10:27:00) [4]

Quest, приветствую, спасибо за ответ,
Я убрал try, и CoInitialize(Nil); вынес, все равно не помогает, вот как в делфи работает:
http://www.kirov.ru/~yuraz/snag-000.gif
а вот просто exe
http://www.kirov.ru/~yuraz/snag-001.gif(одни подключения)....


Quest   (2003-08-27 10:14:00) [5]

ИМХО, нет необходимости каждый раз вызывать
CoInitialize(Nil);и CoUninitialize();
обычно эти вызовы предшествуют первому созданию объекта и CoUninitialize();- вызывается при уничтожении или закрытии программы


Layner   (2003-08-27 10:06:00) [6]

Опа! В делфи(F9) нормально работает этот код, т.е. соединяет столько раз, сколько серверов (у меня i:=10), далее на при каждом соединение выполняются SQL запросы (у меня j:=5).
Но вне делфи, т.е. запуске экзешника, работает не так, почти на каждый запрос, отсоединяется, подсоединяется от сервера, причем по несколько раз подряд, потом всё таки выполняет запрос. Может что сос структуроу TRY не правильно?

for i:=1 to 10 do begin
Try
CoInitialize(Nil);
Form1.ADOConnection1.ConnectionString:="Provider=SQLOLEDB.1;Password=" +Form1.sg.Cells[3,i]+";Persist Security Info=True;User ID="+Form1.sg.Cells[2,i]+";Data Source="+Form1.sg.Cells[1,i]+"";

Form1.ADOConnection1.Connected:=True;
for j:=1 to 5 do
Form1.ADOQuery1.ExecSQL;

finally
CoUninitialize();
end; //for i:=1
end; //try


Layner   (2003-08-25 16:14:00) [7]

Спасибо!!! Quest © (25.08.03 16:05)


Quest   (2003-08-25 16:08:00) [8]

http://www.delphimaster.ru/cgi-bin/forum.pl?id=1061635337&n=1
читай чуть ниже :))


Quest   (2003-08-25 16:05:00) [9]

Try
CoInitialize(Nil);
...
finally
CoUninitialize();
end;

и помоему в USES нужно добавить ActiveX ...


Наверх

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