![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Доступ к базе нескольких клиентов [D6, IB6.x]
S@shka © (2002-07-29 21:10:00)Народ есть TIdTCPSERVER при коннекте к которому ...
procedure TIdTCPServerExecute (AThread:TIdThread)
begin
FillDB (athread.connection.readln());
end;
То есть надо проситать данные от клиента и занести в базу
Процедура описана как
procedure FillDb (S;String);
begin
IbTransaction1.StartTransaction;
IbQuery.Sql.Clear;
IbQuery.Sql.Add ("insert into MYTABLE values (:Val)");
IbQuery.ParamByName ("Val").AsString:=S;
IbQuery.ExecSql;
IbTransaction1.Commit;
end;
Все работает если подключается один клиент. Но если их несколько - то для каждого (как видно) создается свой поток в которых вызывается FillDb и естественно все и глохнет. Данные в базу не вставляются.
Как это обойти не знаю.
Заранее спасибо.
Reindeer Moss Eater (2002-08-16 09:45:00) [1]Должен быть модуль данных, написанный с учетом Thread Safe. Для каждого соединения создается отдельный его экземпляр. И все работает замечательно. И не забудь про TSession в модуле данных
zalvi (2002-08-16 09:33:00) [2]Каким образом настроено подключение клиентов на удаленных машинах
и на той, где непосредственно находится БД?