D7,
在过程内建立数据库连接,有用try ... finally 释放
但是每次调用该过程的时候,内存都有所增加,一直没法释放出来
难道是用存储过程后内存无法释放
代码如下:procedure TRecvFile.UpdateDB;
var
conn: TADOConnection;
sp: TADOStoredProc;
begin
conn := TADOConnection.Create(nil); conn.ConnectionString := 'FILE NAME=conn.udl';
try
conn.Open();
except
on e: Exception do
begin
raise Exception.Create('connection fail!\n' + e.Message);
Exit;
end;
end;
sp := TADOStoredProc.Create(nil);
sp.Connection := conn;
with sp do
begin
Active := false;
Close(); ProcedureName := 'spAdd_Detail;1';
Parameters.Clear();
Parameters.Refresh();
Parameters.ParamByName('@isSucc').Value := BoolToStr(FIsSucc,True);
Parameters.ParamByName('@Memo').Value := FMftResult;
Parameters.ParamByName('@Cabin_filename').Value := StringReplace(ShortFileName,ExtractFileExt(FileName),'',[rfIgnoreCase]);
Parameters.ParamByName('@Result_filename').Value := ShortFileName;
Parameters.ParamByName('@Result_time').Value := FileModiflyTime;
Prepared := True;
end;
conn.BeginTrans(); try
try
sp.ExecProc();
conn.CommitTrans();
except
on e: Exception do
begin
conn.RollbackTrans();
raise Exception.Create('fail!\n' + e.Message);
Exit;
end;
end;
finally
sp.Close();
sp.Free();
conn.Close();
conn.Free;
end;
end;
在过程内建立数据库连接,有用try ... finally 释放
但是每次调用该过程的时候,内存都有所增加,一直没法释放出来
难道是用存储过程后内存无法释放
代码如下:procedure TRecvFile.UpdateDB;
var
conn: TADOConnection;
sp: TADOStoredProc;
begin
conn := TADOConnection.Create(nil); conn.ConnectionString := 'FILE NAME=conn.udl';
try
conn.Open();
except
on e: Exception do
begin
raise Exception.Create('connection fail!\n' + e.Message);
Exit;
end;
end;
sp := TADOStoredProc.Create(nil);
sp.Connection := conn;
with sp do
begin
Active := false;
Close(); ProcedureName := 'spAdd_Detail;1';
Parameters.Clear();
Parameters.Refresh();
Parameters.ParamByName('@isSucc').Value := BoolToStr(FIsSucc,True);
Parameters.ParamByName('@Memo').Value := FMftResult;
Parameters.ParamByName('@Cabin_filename').Value := StringReplace(ShortFileName,ExtractFileExt(FileName),'',[rfIgnoreCase]);
Parameters.ParamByName('@Result_filename').Value := ShortFileName;
Parameters.ParamByName('@Result_time').Value := FileModiflyTime;
Prepared := True;
end;
conn.BeginTrans(); try
try
sp.ExecProc();
conn.CommitTrans();
except
on e: Exception do
begin
conn.RollbackTrans();
raise Exception.Create('fail!\n' + e.Message);
Exit;
end;
end;
finally
sp.Close();
sp.Free();
conn.Close();
conn.Free;
end;
end;
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货