我的代码如下,TADOQuery直接设置的一个连接字符串,没有用到TADOConnection,请问每次运行完之后该如何关闭它所占的连接?我这样写对吗?
function TGatherList.AddNew: Boolean;
var
rowsAffected: Integer;
begin
FQuery.Close;
FQuery.SQL.Clear;
FQuery.SQL.Add('INSERT INTO GATHER_LIST VALUES(:MEMBERID, :URL, :SITE, ' +
':KIND, :CONTENT, :KEYWORD, :STATE, :RETRY, :ERRINFO, :CREATETIME, ' +
'NULL, NULL);SELECT :ID = @@IDENTITY'); FQuery.Parameters.Clear;
MakeInParam(FQuery.Parameters, ftString, 50, 'MEMBERID', self.FMemberID);
MakeInParam(FQuery.Parameters, ftString, 50, 'URL', self.FURL);
MakeInParam(FQuery.Parameters, ftString, 15, 'SITE', self.FSite);
MakeInParam(FQuery.Parameters, ftString, 3, 'KIND', self.FKind);
MakeInParam(FQuery.Parameters, ftMemo, 16, 'CONTENT', self.FContent);
MakeInParam(FQuery.Parameters, ftString, 30, 'KEYWORD', self.FKeyword);
MakeInParam(FQuery.Parameters, ftString, 2, 'STATE', self.FState);
MakeInParam(FQuery.Parameters, ftSmallint, 2, 'RETRY', self.FRetryCounts);
MakeInParam(FQuery.Parameters, ftString, 100, 'ERRINFO', self.FErrorInfo);
MakeInParam(FQuery.Parameters, ftDateTime, 8, 'CREATETIME', self.FCreateTime);
MakeOutParam(FQuery.Parameters, ftInteger, 4, 'ID'); try
rowsAffected := FQuery.ExecSQL;
self.FID := Integer(FQuery.Parameters[10].Value);
finally
FQuery.Close;
end;
Result := rowsAffected > 0;
end;
function TGatherList.AddNew: Boolean;
var
rowsAffected: Integer;
begin
FQuery.Close;
FQuery.SQL.Clear;
FQuery.SQL.Add('INSERT INTO GATHER_LIST VALUES(:MEMBERID, :URL, :SITE, ' +
':KIND, :CONTENT, :KEYWORD, :STATE, :RETRY, :ERRINFO, :CREATETIME, ' +
'NULL, NULL);SELECT :ID = @@IDENTITY'); FQuery.Parameters.Clear;
MakeInParam(FQuery.Parameters, ftString, 50, 'MEMBERID', self.FMemberID);
MakeInParam(FQuery.Parameters, ftString, 50, 'URL', self.FURL);
MakeInParam(FQuery.Parameters, ftString, 15, 'SITE', self.FSite);
MakeInParam(FQuery.Parameters, ftString, 3, 'KIND', self.FKind);
MakeInParam(FQuery.Parameters, ftMemo, 16, 'CONTENT', self.FContent);
MakeInParam(FQuery.Parameters, ftString, 30, 'KEYWORD', self.FKeyword);
MakeInParam(FQuery.Parameters, ftString, 2, 'STATE', self.FState);
MakeInParam(FQuery.Parameters, ftSmallint, 2, 'RETRY', self.FRetryCounts);
MakeInParam(FQuery.Parameters, ftString, 100, 'ERRINFO', self.FErrorInfo);
MakeInParam(FQuery.Parameters, ftDateTime, 8, 'CREATETIME', self.FCreateTime);
MakeOutParam(FQuery.Parameters, ftInteger, 4, 'ID'); try
rowsAffected := FQuery.ExecSQL;
self.FID := Integer(FQuery.Parameters[10].Value);
finally
FQuery.Close;
end;
Result := rowsAffected > 0;
end;
一个INSERT语句你CLOSE个什么劲里!
另外就是用了线程,也要在线程结束的时候关闭该连接(难道你的线程一直都开着,还要开上千个线程???)