dbExpress调用存储过程出现内存泄漏

董董 2010-10-20 04:49:32
用dbExpress的TSQLStoredProc控件,调用Oracle的存储过程,每次调用都会发生内存泄漏。

我使用的是Delphi 2009版本,已经升级到最后版本。

谁遇到过此问题,如何解决?

...全文
104 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
vga 2012-09-19
  • 打赏
  • 举报
回复
procedure TFormMain.Button1Click(Sender: TObject);
var
User_ID, Step, Process, From_ID, To_ID, Data_ID: integer;
CharCnt, CCharCount, Ticks: Integer;
PeiorityOrder, SinglePassField: Boolean;
ImgName: string;
begin
Ticks := GetTickCount;

User_ID := StrToIntDef(Edit1.Text, 3);
Step := StrToIntDef(Edit2.Text, 0);
Process := StrToIntDef(Edit3.Text, 3);
Data_ID := StrToIntDef(Edit4.Text, 0);
To_ID := StrToIntDef(Edit5.Text, 10000);
PeiorityOrder := CheckBox1.Checked;
SinglePassField := CheckBox2.Checked;

repeat
From_ID := Data_ID + 1;
SQLStoredProc1.Active := false;
SQLStoredProc1.ParamByName('User_ID').AsInteger := User_ID;
SQLStoredProc1.ParamByName('Step').AsInteger := Step;
SQLStoredProc1.ParamByName('Process1').AsInteger := Process;
SQLStoredProc1.ParamByName('From_ID').AsInteger := From_ID;
SQLStoredProc1.ParamByName('To_ID').AsInteger := To_ID;
SQLStoredProc1.ParamByName('PriorityOrder').AsInteger := Ord(PeiorityOrder);

SQLStoredProc1.ExecProc;

if SQLStoredProc1.ParamByName('Data_ID').AsInteger > 0 then begin
Data_ID := SQLStoredProc1.ParamByName('Data_ID').AsInteger;
ImgName := SQLStoredProc1.ParamByName('ImageName').AsString;
SQLStoredProc2.Active := false;
SQLStoredProc2.ParamByName('Data_ID').AsInteger := Data_ID;
SQLStoredProc2.ParamByName('Step').AsInteger := Step;
SQLStoredProc2.ParamByName('Process1').AsInteger := Process;
SQLStoredProc2.ParamByName('CharCount').AsInteger := 9;
SQLStoredProc2.ParamByName('CCharCount').AsInteger := 9;
SQLStoredProc2.ParamByName('Ticks').AsInteger := 10;
SQLStoredProc2.ExecProc;
SQLStoredProc2.Params.
end;
until Data_ID=0;

Ticks := (GetTickCount - Ticks) div 1000;
Caption := IntToStr(Ticks);
end;
kye_jufei 2010-10-25
  • 打赏
  • 举报
回复
把代碼貼出來看看,估計是code有問題。。。。。。。。。。
董董 2010-10-24
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 fengsh998 的回复:]
就是咩,我看李维的例子。写了一个测试,不过我没有注意是不是真有。后天回去看看。
哥门,帮我看看你的2009访问ORACLE的CLOB字段操作是不是没问题了。
我用BDS2006访问,很是有问题呢。
[/Quote]

我没有使用过CLOB字段啊,没遇到过你的问题。
边缘998 2010-10-23
  • 打赏
  • 举报
回复
就是咩,我看李维的例子。写了一个测试,不过我没有注意是不是真有。后天回去看看。
哥门,帮我看看你的2009访问ORACLE的CLOB字段操作是不是没问题了。
我用BDS2006访问,很是有问题呢。
董董 2010-10-20
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 taiguang 的回复:]
检查有些类是不是创建了没有释放掉。。。。。
[/Quote]

没有什么手动创建而没有释放的可能,因为都是拖控件,一个TSqlconnection,一个TSqlStoredProcr控件,然后就是设置属性,再就是调用。每个人都可以很快做个例程去验证的。
软件钢琴师 2010-10-20
  • 打赏
  • 举报
回复
检查有些类是不是创建了没有释放掉。。。。。

2,496

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 数据库相关
社区管理员
  • 数据库相关社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧