SQL 字符串或二进制数据将被截断,列名

问题描述 投票:0回答:2

我们有简单的 UI 应用程序,我们使用 SQL Server 数据库。问题是当用户提供的数据超过列长度时,会出现错误:

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

是否可以在运行时找到导致此问题的列?我们的应用程序的设计方式是,UI 标签和列名称是同步的。因此,如果我们可以在运行时查找列名称,那么我们可以让用户立即更正它。

任何帮助将不胜感激。

c# sql .net sql-server asp.net-mvc
2个回答
0
投票

一种方法是检查所有列的长度并设计您的输入,以便他们检查用户文本输入的长度。

这可以简单地通过 html/javascript 完成,

更精细的方法可能是通过 SQL 查询获取每一列参数,并使用 nvarchar 长度作为 html 输入的最大长度的设置。这可能会带来一些性能问题,因为每次在服务器上创建给定表单时都必须调用此查询。

select COLUMN_NAME, CHARACTER_MAXIMUM_LENGTH  from information_schema.columns   where table_name = 'table name'

由于 sql server 很愚蠢并且不告诉你它是哪一列,所以遗憾的是你没有其他选择


-1
投票

错误消息非常清楚:您尝试放入此类字段的数据对于字段本身来说太大了。检查您的插入语句。

然后查看列定义:您定义的长度为(例如)10 或 50 个字符,但您尝试插入的数据比该长度长。 增加列的大小,或减少您发送的数据的大小。

我希望它可以帮助你..

© www.soinside.com 2019 - 2024. All rights reserved.