日期:2014-05-16  浏览次数:20725 次

关于MS SQL的疑问
各位大神,我最近在写一个小程序,遇到一个很纠结的问题。
起初的原因是这样的,我有一张表,是用MS SQL2000的,通过微信的订阅号往里面录入人员名单的时候,老是录不进去。后来,发现,要是人名是2个汉字的话,是可以成功录入的,如果人名是3个汉字的话,就录入失败。这是我要解决的核心问题,希望各位大神不吝赐教。对了,字段格式是Text,我试过,改为varchar,字段长50,好像也不行。
还有,我想知道,有什么SQL语句可以查看数据库编码方式的,希望大家讲讲。
------解决方案--------------------
因为你存储的是汉字,所以建议用ntext类型,这个类型是专门存储多字节数据的。


------解决方案--------------------
你用Profiler抓一下底层插入的SQL,贴出来看看,如果是text类型不应该不行的,实在不行就换ntext,然后再插入
------解决方案--------------------
插入过程用insert into xxx values(N'内容')这样的格式
------解决方案--------------------
数据库不会有问题,应该是程序层面的问题。看下变量的长度定义。

如果怀疑是数据库问题,可以截出SQL语句直接在查询分析器里执行看效果。
------解决方案--------------------
应该跟数据库没有关系。看看你的程序吧
------解决方案--------------------
程序里面是不是把 换行符 或者 空格 算进去,按道理varchar(50)不可能容不下三个汉字
------解决方案--------------------
引用:
Quote: 引用:

数据库不会有问题,应该是程序层面的问题。看下变量的长度定义。

如果怀疑是数据库问题,可以截出SQL语句直接在查询分析器里执行看效果。

即使我调到nvarchar 100,还是不行


估计是你参数化赋值的时候截断的
你看看你怎么赋值的
//SqlParameter parameter = new SqlParameter("@Cloumn1", SqlDbType.VarChar,长度);

------解决方案--------------------
有没有用到自定义函数什么的,参数未指定长度导致自动截取