如何解决数据库死进程巨增的问题? _+_ 在线等...

i405 2005-03-28 12:19:58
D7 + Oralce8.17
AdoQuery AdoTable AdoProcedure 都是自动创建的,执行完相应代码后再释放掉.
可实际情况是程序运行才三四天,未活动的进程就达90多了!!!
应该是每建立一个数据库连接后并没有关闭(我都是用的close 来关闭的,free来释放的)
代码如下:

AdoQury_del:=TAdoQuery.Create(self);
AdoQury_del.ConnectionString:='Provider=MSDAORA.1;Password='+Pwd+';User ID
='+Account+';Data Source='+DataBase;
With AdoQury_del Do
Begin
close;
sql.Clear;
sql.Add('delete from INFO where id=:s1');
parameters[0].value:=Id;
ExecSql;
close;
Free;
end;

AdoTable:=TADOTable.Create(self);
AdoTable.ConnectionString:='Provider=MSDAORA.1;Password='+Pwd+';User
ID='
+Account+';Data Source='+DataBase;
AdoTable.TableName:='info';
AdoTable.Active:=True;
ADoTable.Append;
执行...
ADoTable.Post;
AdoTable.Active:=False;
AdoTable.Free;

AdoProc:=TADOStoredProc.Create(self);
AdoProc.ConnectionString:='Provider=MSDAORA.1;Password='+Pwd+';User
ID='
+Account+';Data Source='+DataBase;
ADoProc.ProcedureName:='YT';
AdoProc.Parameters.CreateParameter('Id',ftString,pdInput,30,null);
AdoProc.Parameters.ParamByName('Id').Value:=Id;
AdoProc.Parameters.CreateParameter('Dte',ftString,pdInput,30,null);
AdoProc.Parameters.ParamByName('Dte').Value:=e_Date;
ADoProc.ExecProc;
AdoProc.Active:=False;
AdoProc.Free;
...全文
62 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
dxhdxh 2005-03-28
  • 打赏
  • 举报
回复
最好是加
try
ADoProc.ExecProc;

except
AdoProc.Free;
end
这种结构
dxhdxh 2005-03-28
  • 打赏
  • 举报
回复
问题是当你的AdoQuery AdoTable AdoProcedure运行出错了就没有free
i405 2005-03-28
  • 打赏
  • 举报
回复
to chwdong(chwdong) :
freeandnil 以后是不是Ado组件与数据库的连接也断开了?
chwdong 2005-03-28
  • 打赏
  • 举报
回复
freeandnil:最彻底的释放方式。
chwdong 2005-03-28
  • 打赏
  • 举报
回复
try
运行程序
except
抛出错误
end;
freeandnil(ADO组件);
i405 2005-03-28
  • 打赏
  • 举报
回复
楼上的各位:
这段代码我是经过筛选的,从实际程序中去掉了异常处理部分再发表过来的.
而且我的程序这几天一直正常运行,没有异常发生.所以我想问题应该出在close 和 free是不是真的能关闭一个数据库连接呢?
firstshine 2005-03-28
  • 打赏
  • 举报
回复
最好是加
try
ADoProc.ExecProc;

finally//注意不是except
AdoProc.Free;
end

2,498

社区成员

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

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