读书人

adoquery参数传递机制,该怎么处理

发布时间: 2012-09-23 10:28:11 作者: rapoo

adoquery参数传递机制
一直对adoquery的参数传递机制很疑惑。
比如说sql.text := 'select * from (select * from a left join b on XX=XX where a.XX=:参数1) a';
然后我用Parameters.parambyname('参数1').value := '';传递参数,
接着去open这个query。就会出现错误。跟踪了sqlserver的事件探查器,发现原因是adoquery给sqlserver传的语句中,:参数的类型是text,然后sqlserver就会提示text类型不是直接用"="比较。
再比如我用Parameters.parambyname('参数1').value := '参数';传递参数,
然后执行这个query,这个query传递给sqlserver的语句里面又会把:参数的类型变成varchar(1),这样又把参数给截断了,又得不到我想要的结果了。我给Parameters.parambyname('参数1').datatype赋值也没用,会提示错误。
希望哪位达人能帮忙解决一下

[解决办法]

Delphi(Pascal) code
  ADOQuery1.Close;  ADOQuery1.SQL.Clear;  ADOQuery1.SQL.Text := 'select acco_name from (select * from bs_acco_info where acco_id=:e) a';  ADOQuery1.Parameters.ParamByName('e').Value := '0111000005';  ADOQuery1.Open; 

读书人网 >.NET

热点推荐