100多个Client,在IdTCPServer的OnExecute中如何用TADOConnection连接SQL SERVER后保存数据?每个客户端Threa

  • 主题发起人 主题发起人 lyshw
  • 开始时间 开始时间
L

lyshw

Unregistered / Unconfirmed
GUEST, unregistred user!
100多个idTCPClient写的客户端向IdTCPServer服务端传输数据,
服务端接收到数据后用ADO写到SQL SERVER,如何在OnExecute中连接SQL,每个客户端Thread 构造一个TADOConnection吗?
这样的需求该如何设计?
procedure TMainForm.IdTCPServer1Execute(AThread: TIdPeerThread);
var
AData: TMemoryStream;
begin
AData:= TMemoryStream.Create;
try
AThread.Connection.ReadStream(AData, -1, False);
if SaveToDB(AData) then
//SaveToDB函数该如何写??
AThread.Connection.WriteLn(DATA_SAVE_SUCCESS)
else
AThread.Connection.WriteLn(DATA_SAVE_FAIL);
finally
AData.Free;
AThread.Connection.Disconnect;
end;
end;
 
大富翁们都在哪儿啊, 急死了
 
你不可能建立100个连接如果那样你几个进程就可以拖死数据库了。
实时性要求不高的话可以先存到文件,然后统一处理
实时性要求高的话建个连接池。个线程从连接池申请一个可用的连接的来操作数据库。如果连接全部被其他线程占用,申请的线程就等待。这可以用信号量对象来实现。
如果你不知道什么叫连接池,什么叫信号量。那么算我上面的白说了。
 
后退
顶部