我们有简单的 UI 应用程序,我们使用 SQL Server 数据库。问题是当用户提供的数据超过列长度时,会出现错误:
字符串或二进制数据将被截断
是否可以在运行时找到导致此问题的列?我们的应用程序的设计方式是,UI 标签和列名称是同步的。因此,如果我们可以在运行时查找列名称,那么我们可以让用户立即更正它。
任何帮助将不胜感激。
一种方法是检查所有列的长度并设计您的输入,以便他们检查用户文本输入的长度。
这可以简单地通过 html/javascript 完成,
更精细的方法可能是通过 SQL 查询获取每一列参数,并使用 nvarchar 长度作为 html 输入的最大长度的设置。这可能会带来一些性能问题,因为每次在服务器上创建给定表单时都必须调用此查询。
select COLUMN_NAME, CHARACTER_MAXIMUM_LENGTH from information_schema.columns where table_name = 'table name'
由于 sql server 很愚蠢并且不告诉你它是哪一列,所以遗憾的是你没有其他选择
错误消息非常清楚:您尝试放入此类字段的数据对于字段本身来说太大了。检查您的插入语句。
然后查看列定义:您定义的长度为(例如)10 或 50 个字符,但您尝试插入的数据比该长度长。 增加列的大小,或减少您发送的数据的大小。
我希望它可以帮助你..