在SQLSERVER中,假如有一字段"A",类型为nvarchar(6)。
如果只输入英文时,最多只能输入6个。输入中文时,也最多能输入6个。
但如果用delphi的adoquery或clientdataset连接数据库且绑定到tdbedit或tdbgrid后,
如果输入中文时,却只最多只能输入3个。输入英文就可以输入6个。
请问各位大虾一般采用什么方法,可以像sqlserver那样中英文输入都是可以输入6个的?csdn今天是怎么了,让我的贴子连发三次,还不能打开。
如果只输入英文时,最多只能输入6个。输入中文时,也最多能输入6个。
但如果用delphi的adoquery或clientdataset连接数据库且绑定到tdbedit或tdbgrid后,
如果输入中文时,却只最多只能输入3个。输入英文就可以输入6个。
请问各位大虾一般采用什么方法,可以像sqlserver那样中英文输入都是可以输入6个的?csdn今天是怎么了,让我的贴子连发三次,还不能打开。
...
var
ws: WideString;
begin
ws := TTntWideStringField(FieldByName('Name')).AsWideString;
end;
如果上面的代码没问题的话,用
MultiByteToWideCharWideChartoMultiByte
这2个函数也应该可以的,原理都一样。
因很多类型都是nvarchar类型的,如果不绑定控件,就得写代码限制每个控件的输入长度,
这样虽然可行,但是比较麻烦。
最好使用varchar类型,我是从来不用nvarchar类型,如果方便可以更改数据库
用 ADO 测试,存在你说的问题,可以用下面代码解决,但也存在问题(输入英文
字符和数字时可能超长)。 with ADODataSet1 do
begin
Active:=false;
for I := 0 to FieldCount - 1 do
if Fields[i].DataType=ftWideString then
Fields[i].Size:=Fields[i].Size*2;
Active:=true;
end;
1、nvarchar对汉字支持最好。
2、nvarchar对Chr类字符,也是用双字节保存。所以nvarchar(10)表示,仅支持10个汉字或10个英文字符。
3、使用nvarchar是今后的方向吧。