不会吧 delphi 6.0 还会犯这么低级的错误(adocommand 不支持中文) (100分)

  • 主题发起人 主题发起人 chshanghai
  • 开始时间 开始时间
C

chshanghai

Unregistered / Unconfirmed
GUEST, unregistred user!
with adocommand1 do begin
commandtext:=' if (select count(*) from tb_user where username=:vusername)>0 '+#13;
commandtext:=commandtext+'print ''ok''';
parameters.parambyname('vusername').value:='江泽民';
execute;
end;
以上这名代码执行没有什么问题但是却不是我想要的结果
本来我想查询是否有username='江泽民'
但是delphi6提交是却是查 username='江'
下面是我在ms sql server 的profile 中监视 delphi 6.0 提交给 mssql7的代吗

sp_executesql N' if (select count(*) from tb_user where username=@P1)>0
print ''ceng''', N'@P1 varchar(3)', '江'
为什么 并且我发现如果参数不是中文则
提交正确
难道delphi 6.0不支持中文
还是......
我的系统 win98+mssql7 +delphi 6+sp1+sp2
在 win2000+mssql7+delphi 6中也试过都是如此


 
我使用查询中文十分正常的.
你使用adocommand.commandtext:='SELECT * FROM table WHERE user=:par';
adocommand.parambyname('par').value:='江泽民';
adocommand.open;
试试;看提示的是"江泽民"不是
 
另外我发现
with adocommand1 do begin
commandtext:=' select count(*) from tb_user where username=:vusername '
commandtext:=commandtext+'print ''ok''';
parameters.parambyname('vusername').value:='江泽民';
execute;
end;
这样就没有问题why .....
 
to hbezwwl
我知道哪样是正常 的
我以前也用过 但是我发现复杂的sql 好像不行
 
我不懂Delphi,但有一次我用JSP编程时,出现了和你一摸一样的问题.
原来是SQL Server里 char 设定太小了!然后就被自动截取了.
中文就是厉害,一个顶两个英文,不要忘了!
 
你是char还是varchar的字段类型,我怎么样都行的.
 
varchar(3)????是不是只能存储一个中文字?? 3/2=1
 
to wukw
我知道sql server 中的中文占一个字节
但这个不是什么设置的问题
而是ado 控件的问题啊
难延大家都没有用过ado 控伯吗 奇怪难道大家用ado 时都没有遇到过吗???

 
肯定是字符长度不够,同意楼上.
 
to hbezwwl
现在的问题是
只要是中参数值为中文 只取第一个中文字
如 '2133242中可想而知' 提交时只取 '2133242中'
而如果是E文时则 全部提交
 
哈哈哈,这我就不懂了,飘然而去。。。
 
奇怪 这么明显的错误都有没有人知道????

难道大家都没有遇到过
谁能解决此问题????
 
呵呵,好像是你的写法有问题啊!
 
to 荷塘新月
有什么问题呢?

 
呵呵,我还没有这样写过SQL
 
奇怪,我这里是正常的呀
实在不行,干脆别用传参数的方式,而直接去拼sql字符串罢
 
字段长太短!
 
to :天真
你看清了没有这跟字段长没有关系
如果不用中文 无论多长都没有问题


to : 萧月禾
你那正常吗
我试了几台机器都有不行
 
select * from tablename where 字段名= '''+变量名+''' 试试!
 
莫明其妙,
 
后退
顶部