我用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也正确
使用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也正确
是ole provider的问题。原来我是用的oracle 的ole provider,现在用ms的就没有问题。真是晕。
谢谢hongqi162 给我的提示。