D
delphiB/S
Unregistered / Unconfirmed
GUEST, unregistred user!
我想在客户端连接服务器时,先发送USR给服务器,然后到数据库里校验。
代码如下,但始终无法成功,检查半天,发现问题主要出在ADO上,
1、如果我将收到的字符串,写到一个TSTRINGS中,然后写到文件里,正常。
2、如果我把这个TSTRINGS放在ADO的CREATE前,写文件正常,后面写文件不成功。
3、ADO的所有连接,SQL语句都正常。
哪位能够替我看看。
另外,问一下,在EXECUTE中动态生成ADO,能够保证线程安全吗?
客户端
procedure TForm1.Button1Click(Sender: TObject);
begin
fidclient.Connect;
try
fidclient.WriteLn('usr');
memo1.Lines.Add(fidclient.ReadLn());
finally fidclient.Disconnect;end;
end;
服务器端
procedure TForm2.TESTIDSERVERExecute(AThread: TIdPeerThread);
var ado1:tadoquery;s:string;
begin
try ado1:=tadoquery.Create(self);ado1.Connection:=adoconn;
ado1.Close;ado1.SQL.Clear;
s:='select * from usrtable where usr='''+athread.Connection.ReadLn()+'''';
ado1.SQL.Add(s);ado1.Open;
if ado1.Eof then
athread.Connection.WriteLn('this is a test,but not pass')
else
athread.Connection.WriteLn('this is a test,pass');
finally athread.Connection.Disconnect;ado1.Free;end;
end;
procedure TForm2.FormCreate(Sender: TObject);
begin
testidserver.Active:=true;
end;
procedure TForm2.FormClose(Sender: TObject; var Action: TCloseAction);
begin
testidserver.Active:=false;
end;
代码如下,但始终无法成功,检查半天,发现问题主要出在ADO上,
1、如果我将收到的字符串,写到一个TSTRINGS中,然后写到文件里,正常。
2、如果我把这个TSTRINGS放在ADO的CREATE前,写文件正常,后面写文件不成功。
3、ADO的所有连接,SQL语句都正常。
哪位能够替我看看。
另外,问一下,在EXECUTE中动态生成ADO,能够保证线程安全吗?
客户端
procedure TForm1.Button1Click(Sender: TObject);
begin
fidclient.Connect;
try
fidclient.WriteLn('usr');
memo1.Lines.Add(fidclient.ReadLn());
finally fidclient.Disconnect;end;
end;
服务器端
procedure TForm2.TESTIDSERVERExecute(AThread: TIdPeerThread);
var ado1:tadoquery;s:string;
begin
try ado1:=tadoquery.Create(self);ado1.Connection:=adoconn;
ado1.Close;ado1.SQL.Clear;
s:='select * from usrtable where usr='''+athread.Connection.ReadLn()+'''';
ado1.SQL.Add(s);ado1.Open;
if ado1.Eof then
athread.Connection.WriteLn('this is a test,but not pass')
else
athread.Connection.WriteLn('this is a test,pass');
finally athread.Connection.Disconnect;ado1.Free;end;
end;
procedure TForm2.FormCreate(Sender: TObject);
begin
testidserver.Active:=true;
end;
procedure TForm2.FormClose(Sender: TObject; var Action: TCloseAction);
begin
testidserver.Active:=false;
end;