我现在有一数据库连接池,用的是TADOConnection连接,原来连接的是sql。现在使用oracle10数据库,我就下来最新的oracle10最新的客户端,使用的oracle的驱动,设置好ConnectionString,但是程序测试下来,有内存泄露!使用软件检测还测不出来哪里有泄漏,但是更换sql的ConnectionString,就没问题。
折腾了好长时间,没测出来。后来我偶然使用了微软的oracle驱动,当然还要装oracle的客户端,但是必须设置个配置文件。测试后居然内存不涨了!!!
这我就奇怪了,什么都没改,微软的驱动不也是调用配置文件里面的链接,还是使用oracle的链接,没啥就没泄露了???这是怎么一会事情???我使用单独的测试程序exe链接oracle,直接模拟select结果,使用oracle的驱动,不使用微软的oracle驱动,但也不涨。我就更加郁闷了向项目经理说明了情况,结果项目经理要求必须使用oracle的驱动,这个用户不必配置那个配置文件(我估计客户不会配置的,会引起很多不要的麻烦)!我的头已经N个大了,大哥大姐门给个解决方法了,不行的话,我真要跳楼了:(
折腾了好长时间,没测出来。后来我偶然使用了微软的oracle驱动,当然还要装oracle的客户端,但是必须设置个配置文件。测试后居然内存不涨了!!!
这我就奇怪了,什么都没改,微软的驱动不也是调用配置文件里面的链接,还是使用oracle的链接,没啥就没泄露了???这是怎么一会事情???我使用单独的测试程序exe链接oracle,直接模拟select结果,使用oracle的驱动,不使用微软的oracle驱动,但也不涨。我就更加郁闷了向项目经理说明了情况,结果项目经理要求必须使用oracle的驱动,这个用户不必配置那个配置文件(我估计客户不会配置的,会引起很多不要的麻烦)!我的头已经N个大了,大哥大姐门给个解决方法了,不行的话,我真要跳楼了:(
解决方案 »
- DELPHI导入EXCEL数据后处理问题
- delphi不用头文件就可以使用write等函数
- 写一个要在PB中调用的DLL,字符串参数应该如何传递?
- 怎麼樣訪問文本文件,讀取和寫入數據/// 急急 100分
- 10台机器以内的局域网,用2层好还是3层好?
- 二维数组的问题
- delphi程序最小化后如何常驻内存执行(在屏幕右下角)?
- MDI的childrenForm的问题??
- !!! 心动网管V1.3 Build1025 for Windows 最新版发布!!!
- 在SQL SERVER 的数据库设计期,可以修改表中某个字段的名称或删除这个字段,如何在程序中做到这一点呢,用什么语句?
- 日期:[fDate] 单据号:[fNo] 怎么提取所有[]里的字符串 现场求解
- 编辑DBGridEh1后如何刷新统计值呢?
但是要是链接串修改成微软那个oracle的,就不涨,sql的也不长。
connectionString:='Provider=OraOLEDB.Oracle.1;User ID=ECM;Password=ecm;Data Source=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.17.31)(PORT=1521)))(CONNECT_DATA =(SERVICE_NAME = orcl)));Persist Security Info=False';
这时就内存泄露如果,我改用这个连接串,就不泄露。这个事微软的oracle,但是需要在客户端程序配置个配置文件,配置文件的内容,就是上面连接的内容,
connectionString:=Provider=MSDAORA.1;Password=test;User ID=test;Data Source=orcl;Persist Security Info=True我的问题是,要用第一种连接方式,但是要解决内存泄露的问题。这两种连接不同的就是连接字符串不同,别的代码我都没动
使用oracle的驱动,请问就一定有内存泄露?我就是想知道泄露在什么地方,是否可以解决,不能用别的方式
我的ADOQuery获取字段信息的时候,都是使用ID= VarToStr(ADOQuery.FieldsValue['字段名']);
结果我改成:
ID:=trim(ADOQuery.FieldByName('字段名').AsString);
就可以了!但是上面的情况,我用微软的那个oracle的驱动也没问题的,有清楚为什么的兄弟姐妹们,回复下。大家共同提高