Delphi中ADOQuery控件的使用问题

版本是Delphi6,连接数据库ORACLE,使用ADOConnection,ADOQuery

情况是这样的,我写的一个小软件中有个MEMO控件是供用户输入SQL语句的,输入的SQL语句直接提交到ADOQuery控件的SQL中然后提交

在测试的时候,我写了一条短语句,加不加分号都是可以的,比如
select * from hr_rpt; --hr_rpt是一张表
可是,当我从一个记事本中摘了一段SQL语句贴到MEMO上点提交的时候,错误出现了
ORA提示,无效字符,怎么会?

在TOAD里测试了一下记事本中的SQL语句,正确。在Delphi里单步调,ctrl+F5跟踪memo.lines.text,发现多了很多'#$D#$A'和'#$D#$A#9',查了一下是制表符之类的,于是写了两条语句过滤掉这些东西
strTmp := mmoSqlInput.Lines.Text;
strTmp := StringReplace(strTmp,#13#10,' ',[rfReplaceAll]);
strTmp := StringReplace(strTmp,#9,'',[rfReplaceAll]);
再跟,这回SQL看起来对了,再运行,还是无效字符,搞什么?

将watch window里进过过滤的strTmp语句拿出来(Ctrl+I调出Inspector,取值)放到TOAD里运行,对的啊,怎么回事?

在memo上粘贴了出问题的SQL语句后,去掉最后的分号,这回执行通过了,返回结果,分号的问题吗?SQL语句长一点,复杂一点,就不能加分号了?

很郁闷的问题啊!怎么回事。
我现在的解决方法是再加一条StringReplace语句
strTmp := StringReplace(strTmp,';','',[rfReplaceAll]);

希望能找到原因,是不是Delphi ADOQuery控件的问题
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值