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

时间:2011-03-11 11:43:35

标签: sql-server sql-server-2008 c#-4.0 c#-3.0

我正在使用实体框架将详细信息插入数据库,其中我有一个列varchar(50)。 当我试图插入超过50长度的值时,它会给我一个错误字符串或二进制数据会被截断。所以,为了安全起见,我只是将其更改为varchar(100)。

现在可以有人让我知道这是改变Db价值的唯一解决方案还是我们有任何替代方案....... 我读了一篇文章http://sqlblogcasts.com/blogs/danny/archive/2008/01/12/scuffling-with-string-or-binary-data-would-be-truncated.aspx

但我如何在c#中使用这些东西。我感谢你的任何建议.........

由于

4 个答案:

答案 0 :(得分:2)

嗯,首先,显然你不能在varchar(50)中插入长于50的字符串。

因此,根据您的要求,您有两种选择:

  • 更改数据库(如您所知)并确保所有代码“上游”都能够处理更长的数据
  • 添加一些验证或限制用户输入,以便永远不会获得更长的字符串

嗯,还有第三个,这是切断字符串而不告诉用户,但我不会这样做。

因此,这取决于您的业务需求。但我不会像你建议的文章那样做任何“诡计”

答案 1 :(得分:2)

根据您正在处理的输入字段的类型,使用varchar(max)可能是一种选择。

但正如之前所指出的,它实际上归结为您的业务需求。

答案 2 :(得分:0)

您应该将db中的字段长度设置为合理长度,并且应该阻止用户输入不适合该长度的值。

答案 3 :(得分:0)

1-when 数据库表Alter when issue生成
2-首先备份表架构和数据,然后在重新创建表时删除表,然后运行代码.. 工作正常。