【问题标题】:ADO.NET Whitespace padding problemADO.NET 空白填充问题
【发布时间】:2009-07-28 15:05:48
【问题描述】:

由于a problem I described earlier,我已经从 LINQ 切换到 SQL 到 ADO.NET(使用 MSSQL),但我在使用 ADO.NET 时也遇到了一个奇怪的问题。

我使用 excel interop 从 excel 工作表中导入数据,并将其内容放入数据库。我修剪了所有插入的东西,所以这不是(应该是)问题的根源。

当我使用 DataGridView 查看表格的内容时,我看到的是每个单元格在它们包含的文本之后都有大量的空格。截图如下。

alt text http://shadow.crysis.hu/so_adonet_whitespaces.png

我用谷歌找到了一个解决方案,但我找到的唯一可用的结果是

SET ANSI_PADDING OFF
GO

我做到了(所以我在开始导入之前将 ANSI_PADDING 设置为 OFF,并在完成后将其重新设置为 ON),但没有任何改变。哦,我使用 NCHAR(255) 作为字段类型。

如果我修剪我在 datagridview 中显示的内容,那很好,但如果可能的话,我想避免这种开销(毕竟,我必须遍历所有显示的行和列,因为我是处理大量数据——几千行——这不是最好的解决方案)。我该怎么办?

非常感谢您!

【问题讨论】:

    标签: c# sql-server ado.net


    【解决方案1】:

    您使用的是 nchar(255),它的静态长度为 255。尝试将列更改为 nvarchar(255)

    nchar(255) 将始终为您提供 255 个字符。那些未使用的由空格(ASCII 中的 0x20 又名空格)填充。 nvarchar(255) 初始化时会分配 255 个字符,但只使用必要的字符。

    在这种情况下,您需要nvarchar(255),因为您有一个可变长度的字符串。

    【讨论】:

      【解决方案2】:

      尝试使用 NVARCHAR 而不是 NCHAR。

      【讨论】:

        【解决方案3】:

        NCHAR 是一个固定长度的字段。使用 NVARCHAR 作为您的数据类型会阻止您获取空格。

        【讨论】:

        • 谢谢!不幸的是,埃里克给出了最详细的答案,所以我接受了他的回答,但你也得到了 +1。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2017-04-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-08-30
        相关资源
        最近更新 更多