请教:关于在AdoQuery的参数中传递中文常量值遇到的问题...急呀.

dickman 2006-02-19 11:26:39
三层结构应用服务器中的AdoQuery1的sql为: select * from table1 where mc=:@mc , 其中mc字段是varchar(60)类型.

在客户端有一个clientDataSet1通过DataSet Provider 与AdoQuery1相联, 当使用如下代码对参数赋值时发现如下问题:
with clientdataset1 do
begin
params.parameterByName('@mc').value='非技术问题';
open;
end;

但执行结果是:记录集为空. 通过sql profile跟踪,发现传递给sql server 的sql 语句及其参数都是以'N带头的,其中对参数@mc只是定义为varchar(5) , 使用双字节字符集进行传递参数.


我如何改变delphi这种内定行为??????


...全文
95 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
delphibs 2006-02-25
  • 打赏
  • 举报
回复
我也碰到这个问题,现在只是多加几个空格符来解决.有好办法请通知我.
jinzhili 2006-02-24
  • 打赏
  • 举报
回复
1.params.parameterByName('@mc').value='非技术问题';
改成 params.parameterByName('@mc').value=''''+'非技术问题'+'''';
意思是说要作为一个字符串传过去才行。
2.最好是把查询语句打印出来看看。
可以用如下方法:
如:
s := 'select * from t where id=%d and name=''%s'' ';
s := format(s,[varID,varName]);
然后把语句放入cs中。
这样可以在调试的时候把查询语句用 ctrl+f7 弄出来放到查询分析器中执行一下。

我也没有真正的作过三层软件,好久以前看过一些。
以上几点有可能不对,敬请参考。
lovendII 2006-02-24
  • 打赏
  • 举报
回复
没注意看你的信誉分
lovendII 2006-02-24
  • 打赏
  • 举报
回复
参数把@符号去掉试试
dickman 2006-02-19
  • 打赏
  • 举报
回复
非常急呀....要发布给客户了.

2,497

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 数据库相关
社区管理员
  • 数据库相关社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧