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

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

SQL server+ ADO + Multithreading [D6, Access]


Tom ©   (2005-10-21 17:16:00) 

Итак...программа представляет из себя Сервера который связывается с клиентами на мною написанном протоколе,Сервер многопоточный - то ест на каждого клиента открывает свой поток.В каждом потоке сервер соединятся с базой - ранше это была MSAccess а теперь SQLserver , с Access сушествовало одно Connection,постоянно открытый, и Append происходил в CriticalSection,пытаясь сделать тоже с SQLserver - с одним клиентом все было ок,при двух начал кричать "Connection уже открыт!"
После следуюшего "исправления" : открываю и закрываю Connection до и после работы с базой стало даже с одним клиентом выдавать "this opperation cant be maked asynchronously" ....одним словом : "как работать правилно с ADO + SQLserver + multithreading "????


Tom   (2005-10-21 18:33:00) [1]

Спасибо!!! сделаю как сказали а завтра сообшю результат!


isasa   (2005-10-21 18:27:00) [2]

1. isasa ©   (21.10.05 17:58) [5]

2. Baltika-15   (21.10.05 18:03) [7]
Один поток - одно подключение TADOConnection.


И вынеси нафиг ADOConnection из модуля Data. Объяви все компоненты, по работе с базой локально, в рамках потока. Там их создавай, откравай, закрывай.

А код у тебя есть, свой. Раз с одним работает. :)


Tom   (2005-10-21 18:19:00) [3]

>>Baltika-15
>>Один поток - одно подключение TADOConnection.

Может знаете где можно найти кусочек кода? :) Заранее спасибо!!!


clickmaker   (2005-10-21 18:03:00) [4]


> Tom   (21.10.05 17:49) [4]
> Работаю с ADO,и с ним тоже нужны Sessions?

любой коннект к БД - это сессия. И движок тут не причем


Baltika-15   (2005-10-21 18:03:00) [5]


> Tom   (21.10.05 17:49) [4]
>
> Работаю с ADO,и с ним тоже нужны Sessions?


Один поток - одно подключение TADOConnection.

> isasa ©   (21.10.05 17:58) [5]
>
> Вариант
>
> ....
> CoInitFlags:=COINIT_MULTITHREADED;
> Application.Initialize;


Мне кажется, что вряд ли это поможет. ADOConnection запросы выполняет последовательно.


isasa   (2005-10-21 17:58:00) [6]

Вариант

....
CoInitFlags:=COINIT_MULTITHREADED;
Application.Initialize;
...


Tom   (2005-10-21 17:49:00) [7]

Работаю с ADO,и с ним тоже нужны Sessions?


Baltika-15   (2005-10-21 17:46:00) [8]


> Tom   (21.10.05 17:41) [2]
>
> А где об этом можно почитать?


В Hеlp, конечно.
Затем статьи на разных сайтах(яндекс поможет однозначно - ключевое слово TThread)


Tom   (2005-10-21 17:41:00) [9]

А где об этом можно почитать?


clickmaker   (2005-10-21 17:38:00) [10]

на каждый поток открывать свою сессию


Наверх

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