【问题标题】:‘String or binary data would be truncated’‘字符串或二进制数据将被截断’
【发布时间】:2011-03-11 11:43:34
【问题描述】:

我正在使用实体框架将详细信息插入到我有列 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# 中使用这些东西。我很感激你的任何建议............

谢谢

【问题讨论】:

  • 如果您显示插入查询/存储过程会有所帮助

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


【解决方案1】:

根据您处理的输入字段类型,可以选择使用varchar(max)

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

【讨论】:

    【解决方案2】:

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

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

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

    好吧,还有第三个,它在不告诉用户的情况下切断了字符串,但我不会那样做。

    所以这取决于您的业务需求做什么。但我不会像你建议的文章那样做任何“技巧”

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        【解决方案4】:

        1-当问题产生时数据库表改变
        2-首先备份表架构和数据,然后在重新创建表时删除表,然后运行代码..工作正常。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2010-10-21
          • 2022-01-11
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多