您的位置:首页 > 编程语言 > Delphi

delphi中使用ADOQuery时的中文参数问题

2020-02-17 11:12 337 查看

今天在使用ClientDataSource查询的时候,“divece_name”参数赋值为“%笔记本电脑%”,但是使用SQL Server Profiler跟踪后发现查询的语句变为:

查询的数据提交到数据库时不完整,当我把N'@P1 varchar(8)', '%笔记本%'就可以正常执行了

我想可能是数据类型不正确,于是这么写:

cdsEquipment.Close;
cdsEquipment.Params.ParamByName('divece_name').DateType := ftWideString; cdsEquipment.Params.ParamByName('divece_name').Value := '%' + txtDevice.Text + '%'; cdsEquipment.Open;

 但是提交到数据库的数据依然不完整:

最后在中间服务端的ADOQuery控件的BeforeOpen事件中加入如下代码就可以了:

 

adoqEquipment.Parameters.ParamByName('divece_name').Size := Length(adoqEquipment.Parameters.
ParamByName('divece_name').Value);

 重新设置参数长度,据说这是ADOQuery控件的BUG,对中文参数的支持问题

转载于:https://www.cnblogs.com/skyblue-Mr/archive/2013/03/14/2959472.html

  • 点赞
  • 收藏
  • 分享
  • 文章举报
diaomei1934 发布了0 篇原创文章 · 获赞 0 · 访问量 71 私信 关注
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: