三层结构中的参数传递问题(关于中文参数的传递)(100分)

  • 主题发起人 主题发起人 jonyhuang
  • 开始时间 开始时间
J

jonyhuang

Unregistered / Unconfirmed
GUEST, unregistred user!
客户端使用 ClientDataSet,SocketConnection
ClientDataSet1.Params.ParamByName('@tcx').AsString:=edit1.Text;
ClientDataSet1.Close;
ClientDataSet1.Open;
服务器端使用:
ADOconnection,DataSetProvider,ADOStoredProc
存储过程
CREATE PROCEDURE cx1
@tcx VARCHAR(50)
as
select * from pass where name=@tcx
GO
当客户端的edit 中输入数字或字母 能正确得到返回数据
当客户端的edit 中输入汉字就无法返回数据
如果ADOconnection通过ODBC连接数据库就报错‘字符串右截位’
如果不通过ODBC就什么也不返回,但也不报错
我在服务器端加入
procedure Tdemodata.ADOConnection1BeforeConnect(Sender: TObject);
begin
form1.Label1.Caption:=ADOStoredProc1.Parameters[0].Value;
end;

ADOStoredProc1.Parameters[0].Value得到的传入参数是正确的,但不知道什么
不返回正确的结果
请各位高手指点一二,急用


 
ClientDataSet1.Params.ParamByName('@tcx').AsString:=edit1.Text;
在edit1.text的后面添加length(edit1.text)长度的空格
 
汉字在传输后要多进行一次解码才能得到正确的输出吧。
 
这是bug,用Carson_zzd的方法是一个迂回的方法,也是不得以的办法
 
具体如何做??
 
在应用服务端BeforeExecute中加入
Params.ParamByName('@tcx').size:=?
 
后退
顶部