我用Delphi透过ADO访问Oracle817数据库.
使用TADOQuery编写SQL命令提取自己想要的数据.
MDAC版本2.7/2.8都测试过,Delphi7/Delphi2007也都测试过,都存在以下问题
命令都在TOAD环境下测试能达到预期结果。编写一条SQL命令,比如:Select XM from table1 where DZ = '重庆' //ADO没有任何结果集返回,BDE返回正确,TOAD也正确这调sql在TOAD里面运行能达到预期目的,返回正确想要的结果集。
用BDE数据引擎写,也能返回正确的预期结果。
但用ADO数据引擎,不报错,只是没有任何结果返回,recordcount=0???不会是字符集的问题吧,软件各方面都运行正常的。没有乱码,字符集配置的是ascii7。而如果DZ的字段内容是字母,数字,ADO也能返回正确结果。
比如:Select XM from table1 where DZ = 'ChongQing'  //ADO返回正确想要的结果集,BDE返回正确,TOAD也正确后来,考虑是不是字段宽度问题,Oracle给后面都加了空格的问题,又测试
Select XM from table1 where RTrim(DZ) = '重庆'   //ADO也没有任何结果集返回,,BDE返回正确,TOAD也正确

解决方案 »

  1.   

    操作Oracle要用Oracle ADO,到网上去下载
      

  2.   

    这个可能和你的字符集有关,尤其是中文通过ado执行的 select * from table1 where dz='重庆',服务器接受接受到的字符不一定是'重庆'很可能是乱码。解决办法就是设置客户端的字符集格式,最好用oracle 的odac组件去访问oracle数据库.
      

  3.   

    问题已经解决。
    是ole provider的问题。原来我是用的oracle 的ole provider,现在用ms的就没有问题。真是晕。
    谢谢hongqi162 给我的提示。