ado连接超出系统资源,急急急 现在用ado连接dbf数据,由于要不断访问数据,所以建立了很多连接。用timer切换,但是我每次处理完数据,我都close连接和adoquery。可是跟踪内存的时候还是会有问题出现,内存的占用在不断上升,最后超出系统资源,我该怎么释放?// 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 程序控制不应该无限制增长,你应该使用连接池,队列,任务这些概念,让所有作业排队,这种情况下也不应该使用timer而是线程 DataFunc := TDataFunc.create; bdDate := DataFunc.GetBdDate(arrayZsBm[0]); bdDate := copy(bdDate,1,8); //本地日期 统一格式 szDate := DataFunc.GetSzDate('sjshq'); szDate := copy(szDate,1,8);; //深圳日期 取第一条记录 shDate := DataFunc.GetShDate('show2003'); shDate := copy(shDate,1,8); dataModForm.adoq1.Close; dataModForm.adoconn1.Close; DataFunc.free;我不断在访问数据表,还有不断close 跟踪内存的时候,在连接后内存突然增加了一辈,没timer一次就增加1M左右还有神秘地方要释放的怎么用连接池啊,不用timer,怎么做线程,以前都用timer做的 有可能是Microsoft.Jet.OLEDB.4.0的问题,它每调用一次给clientdataset,就开辟一次内存空间但也不知道怎么去释放 1.你代码贴的不太多.2.你哪要是写TIMER里面的话,第一条使TIMER.ENABLE:= FALSE;最后写TIMER.ENABLE:= TRUE; >>于要不断访问数据,所以建立了很多连接。ADO连接dbf这样的桌面数据库,偶不熟悉,可否考虑用BDE,而不用ado控件呢?或者,从你的业务中经常连接,打开,关闭数据库,从性能效率上来说,有一定的瓶颈何不考虑,换个C/S级别的数据库呢,如FireBird,Mysql,当然也可MS Sqlserver如果数据量不是太大还可以考虑文件型的数据库 timer的这个问题我考虑进去了,现在我能确定是clientdataset的问题,去数据给它的时候,内存猛增 如果你是这两种情况,建议你换数据库:1、在一个单机环境中访问数据库,因程序逻辑需要同时建了很多连接;2、是客户机/服务器应用,同时有多个用户连接数据库。建议使用sql server,sqlanywhere等真正的sql数据库。 我是访问dbf数据表,没有办法换数据库现在知道是数据库引擎的问题了,但是不用Microsoft.Jet.OLEDB.4.0,还有什么别的引擎吗,能帮忙把连接串都写下来吗下面是我的连接串'Provider=Microsoft.Jet.OLEDB.4.0;Data Source='+bdPath+';Extended Properties=dBASE IV;User ID=Admin;Password='; 现在我用dll来做,没办法了 谢谢 Defphi 7 安装? 上、下位机通信中的显示问题!!!急!!!在线等 《急需C++程序员,成都》 汇编下如何处理字符串? 安装运行turbo pascal 7.0 后,出现一个提示: Error 36 : BEGIN expected.是怎么回事? [请教编程工具]请问Delphi下,各位用什么工具来测试程序的性能指标 一个时间操作的问题? 求教:怎样传递一个接口给COM组件 我的分布式多層架構為什么客戶机不能更新數据? 用一个窗体作个浮动提示框,可弹出来总获得焦点,怎么不让它获得焦点呢? delphi7 怎么调用微软的media player
bdDate := DataFunc.GetBdDate(arrayZsBm[0]);
bdDate := copy(bdDate,1,8); //本地日期 统一格式
szDate := DataFunc.GetSzDate('sjshq');
szDate := copy(szDate,1,8);; //深圳日期 取第一条记录
shDate := DataFunc.GetShDate('show2003');
shDate := copy(shDate,1,8);
dataModForm.adoq1.Close;
dataModForm.adoconn1.Close;
DataFunc.free;
我不断在访问数据表,还有不断close
跟踪内存的时候,在连接后内存突然增加了一辈,没timer一次就增加1M左右
还有神秘地方要释放的怎么用连接池啊,不用timer,怎么做线程,以前都用timer做的
它每调用一次给clientdataset,就开辟一次内存空间
但也不知道怎么去释放
2.你哪要是写TIMER里面的话,第一条使TIMER.ENABLE:= FALSE;最后写TIMER.ENABLE:= TRUE;
现在我能确定是clientdataset的问题,去数据给它的时候,内存猛增
1、在一个单机环境中访问数据库,因程序逻辑需要同时建了很多连接;
2、是客户机/服务器应用,同时有多个用户连接数据库。
建议使用sql server,sqlanywhere等真正的sql数据库。
现在知道是数据库引擎的问题了,但是不用Microsoft.Jet.OLEDB.4.0,
还有什么别的引擎吗,
能帮忙把连接串都写下来吗
下面是我的连接串
'Provider=Microsoft.Jet.OLEDB.4.0;Data Source='+bdPath+';Extended Properties=dBASE IV;User ID=Admin;Password=';