客户端使用中文字符串常量值作为clientdataset的参数转递到0DCOM服务器时有误?(100分)

  • 主题发起人 主题发起人 flysand
  • 开始时间 开始时间
F

flysand

Unregistered / Unconfirmed
GUEST, unregistred user!
DCOM服务器中:
provider1.dataset:=AdoQuery1;
//(AdoQuery1连接SQL2000)
provider1.opertion:=[poAllowCommandText];
客户端中
clientdataset1.provider:=dcomconnect1.provider1;
如果
clientdataset1.sql='select * from clients where name=''abc''';
就能正确查询到name='abc'的数据记录(只要name=英文字符串就正常)

clientdataset1.sql='select * from clients where name=''张三''';
则不能查询到name='张三'的数据记录(只要name=中文字符串就不能查询
到有效的数据记录)
谁知道这是为什么?
 
用 clientdataset1.sql='select * from clients where name='+'''+'张三'+''';
试一下,以前好像做过,记不清了
 
//上面问题写错,应为:
DCOM服务器中:
AdoQuery1.sql='select * from clients where name=:VNAME';
provider1.dataset:=AdoQuery1;
//(AdoQuery1连接SQL2000)
provider1.opertion:=[poAllowCommandText];
客户端中
clientdataset1.provider:=dcomconnect1.provider1;
如果
clientdataset1.PARAMS[0].VALUE:='abc';
就能正确查询到name='abc'的数据记录(只要PARAMS[0]值为英文字符串就正常)

clientdataset1.PARAMS[0].VALUE:='张三';
则不能查询到name='张三'的数据记录(只要PARAMS[0]值为中文字符串就不能查询
到有效的数据记录)
谁知道这是为什么?
 
to flysand:
不知你的问题解决了没有?
 
to 李一凡:
你是否也遇到同样情况?
 
将ADODB.PAS单元中的varDataSize函数中的PWideString类型转换改为String强制类型转换
 
多人接受答案了。
 
后退
顶部