我在Delphi6中使用ADOQuery的Post方式存储数据到数据库的NVarchar字段类型中,发现存进去后会自动补空格,比如我存的是“中文”,那么存到数据库中会自动变成"中文 ",后面一堆空格,这个问题请哪位告诉告诉我怎么解决??
注意:
1、请不要告诉我不用Post或者不用Nvarchar字段而用Varchar字段,我有不得已的原因必须这么作
2、请不要告诉我使用Delphi7,我知道Delphi7没有这个问题,但我不能用Delphi7
3、请不要告诉我取出来的时候再去Trim,我的这种字段非常多,每个字段Trim简直无法忍受
请高手帮助解决,谢谢
注意:
1、请不要告诉我不用Post或者不用Nvarchar字段而用Varchar字段,我有不得已的原因必须这么作
2、请不要告诉我使用Delphi7,我知道Delphi7没有这个问题,但我不能用Delphi7
3、请不要告诉我取出来的时候再去Trim,我的这种字段非常多,每个字段Trim简直无法忍受
请高手帮助解决,谢谢
你是怎么检验他后面插入了空格的?别说你是直接在库字段里面看到的。
你要在前台验证一下,把存进去的数据再取出来,看看是不是多了空格?
我个人认为不可能有这种情况。我当然验证过,数据库里和程序读出来都有空格。我认为Borland也不会出现这种傻Bug,
但实际情况确实如此,你们可以用Delphi6 + Nvarchar验证 unsigned(僵哥(为什么我会到这里来……)) ( ) 信誉:100 Blog 2006-08-31 23:13:00 得分: 0
varchar,nvarchar等,后面的空格是不计的,之所以楼主看到有空格,仅仅只是楼主所使用的工具当中根本nvarchar的长度大小给出的一个格式,而并不是真的在数据库当中有那么些空格后缀,事实上,你想存还存不进去。对于数据库当中的信息如果觉得有问题,可以使用datalength来测试实际占用空间,也可以使用cast as nvarbinary或者convert来转换成16进制查阅。
varchar,nvarchar等,后面的空格是不计的,这个我当然知道,这是数据库的特性,我直接在数据库里么操作nvarchar是不会有空格的,但现在使用D6 + Post操作NVarchar就会自动加空格,所以我认为是D6的问题,而不是SQLServer的问题,我使用的是Delphi最普通的DataGrid作的测试。
用DataLength测试也发现确实长度很大(几百)请各位高手帮忙看下这个问题,我不是菜鸟,所以不会出现菜鸟级别的错误。哪位高手能解决,我可以高分酬谢。谢谢!!!
======================================
这里面的关键并不是是否支持的问题,如果不支持,而能正常转换仍然不会存在问题,只是目前我也仅只是凭猜测,我没有确实的测试结果。抱歉。