在delphi中,使用ADOQuery控件进行查询时怎样才能传递双字节,
比如说sql语句是:
var
  str:widestring;
with ADOQuery do
begin
  clear;
  sql.clear;
  sql.add('select * from B_TABLEK where name=:name');
  parameters[0].value:=str;
  parpered;
  open;
end;
我用sql server查询双字节比如韩文时都能够查询,
但是采用控件的时候却总是查不出来.
  
请那位大侠能够帮忙,不胜感激.

解决方案 »

  1.   

    Delphi的控件不支持Unicode. 我也在头痛这个问题。
    不过如果同样的程序, 拿到Win2000或XP上就不会用问题。Delphi的对Unicode的支持都是依赖平台来实现的, 当然, 你可以改写控件来实现, 还过这样的工作量太大了:(学习中
      

  2.   

    你是否用 MyTable['MyUnicode'] 还是用 MyTable.FieldByName('MyUnicode').AsString 来调用该 unicode 字段?我相信只有前者是用variant类型, 才可以产生正确的TWideStringField,  才能正常的显示nvarchar 或 nchar字段.
    而後者是TStringField, 是用DBCS(Double byte char. set)是看不到unicode.我相信问题是Delphi的ADO所调用的MDAC, 未有相应unicode和DBCS调换.  当我改用SQL Direct来取代ADO之後, 因为SQL Direct是可以透过 SQL 2000 客户端的运行库来连MS SQL, 所有的 unicode和 DBCS 都是自动的运行, 不曾出现过乱码.
      

  3.   

    我也曾经遇到过这种问题,
    我在sql server2000里查询有unicode字段的数据都没有问题,
    但是delphi中使用ADOQuery控件好象都不管用,
    听一位朋友说在access中用下面语句:
    var
    s:widestring;
    sq;:='select * from b_tree where field='''+s+''''都没有问题,
    但我用了,好象不管用,有哪位大侠能够指点吗?