最后一次问ADO导致内存泄露的问题,看看有没有解决办法。
可以确认在使用ADO打开数据库的时候,即使及时CLOSE数据库,内存还会一定增加,没完全释放,也就是内存泄露。
看了网上很多帖子,提出此类问题的人比较多,解决办法比较少。在这些办法中说断开数据库连接,过个一段时间在连接,目的是让系统有时间或是内存。但经本人测试无效。还有说ADO版本升级,可是我已经是最新版本的ADO了,依然还是内存泄露。
最后:程序肯定没问题。只要把ADO打开数据库的这些语句一注销,内存泄露立即消失。请问,大侠们还有其他解决办法吗?DELPHI如果不用ADO还能用其他什么办法访问数据库?

解决方案 »

  1.   

    可以尝试一下数据集控件,例如:UiDAC等等。
      

  2.   

    一直在用ado连接数据库,并没有发现内存泄露导致程序无法正常运行的现象。
      

  3.   

    ado只有在频繁使用数据库的时候才会出现内存泄露,所以一般保存数据什么的你看不出什么问题。尤其是长时间运行打开关闭数据库,这个问题就暴露出来了。
      

  4.   

      请楼主是连接什么数据库? 我测试就是连接Oracle发现过有内存泄漏。 MS SQL 没有发现但是如果升级ADO版本应该可以解决Oracle内存泄漏的问题,但我一直没有验证。 因为高版本的ADO在Server 版本才能安装
      

  5.   

    我连接的是ACCESS。但是,应该和什么数据库无关,而是和ADO本身有关。
      

  6.   

    如果是access数据库的话,ADO操作的时候会发生内存泄漏,但是ADO的问题,还是access数据的问题就不好说了,我以前写的软件每天都会用ado从access数据库里面进行操作,运行一年多了都没有什么问题。
      

  7.   

    表示怀疑,用fastmm做下跟踪测试
      

  8.   

    小白路过,帮忙顶了。一直用ado,没发现过,可能是我用的时间段吧。
      

  9.   

    用access啊,直接用sqlie多舒服?
      

  10.   

    sqlie是什么?
      

  11.   

    都说了让你安装fastmm,用来检测和跟踪内存泄露以定位泄露的根源。
    sqlite 是最好的嵌入式数据库。
      

  12.   

    如果你不想发时间解决"ado"内存泄露问题,就试下用sqlite吧。
    用sqlite的话,直接用它的api操作数据库,不需要任何其他驱动。sqlite只需要带一个sqlite3.dll和一个数据库文件就是它的全部了。用cb的话,项目里直接加入sqlite3.c文件编译,连sqlite3.dll都不用带。
      

  13.   


    请问这位兄弟,你说的SQLITE可以代替工程项目里要用到的SQL SERVER 2005吗?
      

  14.   

    你所谓的内存泄漏是在客户端还是在服务器端呢?如果在服务器端肯定是数据库的问题,如果在客户端,则可能是ado、数据库或delphi相关组件问题。
    我的数据库同时在线人数约200人,已经大约3年没重启服务器了,运行非常稳硕,开发模式是ado+delphi