将截断字符串或二进制数据

这是怎么回事啊,老是出现这个。网上查的是超出了字符限制。
情况是这样的刚开始见表的时候他的字符长度比较少,后来修改的很大了,再输入时的字符绝对没超过。但是还是出现这种情况,后来我重建表后就把字符长度设为很大的后来就不出现了,这是怎么回事???

报这个错误 是因为你插入的字符串长度超过了你定义的字符串长度\x0d\x0a就是你那个nchar 你上面定义了3个这样的类型 \x0d\x0a要一个个的排除了 看你的表files 对应的字段哪个字段比你传入的字符串长度短就是了\x0d\x0a还有就是变量的赋值也不能超过变量定义的长度 \x0d\x0a\x0d\x0a总结一下,有两原因:\x0d\x0a一、变量的赋值不能超过变量定义的长度\x0d\x0a二、表files 对应的字段的长度要和变量传入的字符串长度相同
温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2018-06-21

原因在于数据的长度不符合才造成的。

解决办法当然有多种,一是修改数据库字段大小; 二是加强数据强壮性,严格的输入判断。

目前是采用修改数据的方法:alter table1 alter column caller varchar(50)

主要原因就是你增加的数据字段长度超过数据库中字段所定义长度,去查看一下自己数据库中的字段的长度,一般是误写出来的,查看一下自己数据库中需要自己设置字段类型长度的字段,修改其字段长度为最大就可以了,Sql server 可以设置其为varchar(max)或者text类型,建议采用varchar(max),便于映射。

附 LOG日志文件:

System.Data.SqlClient.SqlException: 将截断字符串或二进制数据。

语句已终止。
在 System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection)

本回答被网友采纳
第2个回答  2020-08-03

Bit数据类型在SQLServer数据库中以存储1、0进行存储。

如果它是连通的,那么它连续同构于R或C(关于通常绝对值的拓扑);如果它是完全不连通的,那么它就连续同构于p进数域Qp的一个有限扩域,或者某个有限域K上的形式幂级数域K((x))的有限扩域。

1.若使用SQL语句在查询分析器中进行修改,需要传入1、0。在SQL语句中也只能用0或者1,比如"wheresex=1"不能用"wheresex=TURE"。

2.若使用企业管理器直接在表中进行修改,需要使用True、False。使用SqlDataReader读出的Bit类型数据返回值为bool类型,若将返回结果关联到GridView中,那么此列下呈现的是复选框,复选框的Checked属性绑定Bit类型字段的返回值。

扩展资料:

har与varchar的比较:

1、数据存储开销:每个varchar列需要额外的两个字节,用于反映存储的数据的长度。每个可为NULL的char列,需要一些字节(空位图)来反应数据的为空性。无论实际数据的长度是多少,char按照定义的长度分配存储空间。

2、NULL值:char列的NULL值占用存储空间,varcahr列的NULL值不占用存储空间。插入同样数量的NULL值,varchar列的插入效率明显高出char列。

本回答被网友采纳
第3个回答  推荐于2017-11-17
两天前我刚刚碰到过,会出现这样的报错原因是 你输入字符串的长度,超过了你数据库能录入的长度.
最简单的方法, 把你数据库的值,都改为varchar(50) . 试试就知道是哪个超过了.本回答被提问者采纳
第4个回答  2019-06-22

1、将十进制转换成二进制,利用bin()方法。

2、获取二进制数据的长度, A2=7878798978787878;bin(A2);。

3、使用to_bytes()方法,byteorder为little。

4、使用to_bytes()方法,byteorder为big。

5、添加signed=True属性。

6、利用bit_length()方法。