adoquery参数赋值为汉字查询不到结果
时间:2011-08-28
来源:互联网
求救如题:
form1.ADOQuery1.Close;
form1.ADOQuery1.SQL.Clear;
form1.ADOQuery1.SQL.Add('select * from users where user_name = :user_name');
form1.ADOQuery1.Parameters.ParamByName('user_name').Value:='张三';
form1.ADOQuery1.Open;
如果参数user_name为数字或字母则可查询到结果,如为汉字则结果为空,表users中有"张三"值,而通过sqlplus或PB可查到:select * from users where user_name='张三';从delphi7升级到delphi2010仍如此。跟踪oracle发现传递参数值时'张三'变为'??',因此查询结果自然为空,求解决方案,新手分不多,折腾一天了,没解决,请各位高手指教。
form1.ADOQuery1.Close;
form1.ADOQuery1.SQL.Clear;
form1.ADOQuery1.SQL.Add('select * from users where user_name = :user_name');
form1.ADOQuery1.Parameters.ParamByName('user_name').Value:='张三';
form1.ADOQuery1.Open;
如果参数user_name为数字或字母则可查询到结果,如为汉字则结果为空,表users中有"张三"值,而通过sqlplus或PB可查到:select * from users where user_name='张三';从delphi7升级到delphi2010仍如此。跟踪oracle发现传递参数值时'张三'变为'??',因此查询结果自然为空,求解决方案,新手分不多,折腾一天了,没解决,请各位高手指教。
作者: jfz2010 发布时间: 2011-08-28
字符集的问题,数据库用的是什么字符集,UTF和
delphi中转换一下:
Delphi(Pascal) code
delphi中转换一下:
Delphi(Pascal) code
Parameters.ParamByName('FiledName').Value := UTF8Encode('张三');
作者: gxgyj 发布时间: 2011-08-28
引用 1 楼 gxgyj 的回复:
字符集的问题,数据库用的是什么字符集,UTF和
delphi中转换一下:
Delphi(Pascal) code
Parameters.ParamByName('FiledName').Value := UTF8Encode('张三');
字符集的问题,数据库用的是什么字符集,UTF和
delphi中转换一下:
Delphi(Pascal) code
Parameters.ParamByName('FiledName').Value := UTF8Encode('张三');
谢谢,还是不行啊,跟踪结果是:
select users.*, users."ROWID" from users where user_name=:1
position :1 type ansi fixed char value '??'
no data found
传入的参数还是变为'??'
TADOQuery的SQL的属性,它是TStrings,是VCL的字符串类,它是单字节类型的,
而TADODataSet的CommandText是WideString,使双字节的字符串类型,就是unicode字符串,支持unicode,我改用TADODataSet结果也是一样。
oracle为10g,nls为AMERICAN.AMERIC.US7ASCII,为什么sqlplus及PB都可以正确查到结果,delphi却不行啊
作者: jfz2010 发布时间: 2011-08-28
SELECT VALUE FROM SYS.NLS_DATABASE_PARAMETERS WHERE PARAMETER = 'NLS_CHARACTERSET';结果为US7ASCII
SELECT VALUE FROM SYS.NLS_DATABASE_PARAMETERS WHERE PARAMETER = 'NLS_NCHAR_CHARACTERSET';结果为AL16UTF16
SELECT VALUE FROM SYS.NLS_DATABASE_PARAMETERS WHERE PARAMETER = 'NLS_NCHAR_CHARACTERSET';结果为AL16UTF16
作者: jfz2010 发布时间: 2011-08-28
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28