ADO.NET空白填充问题

时间:2009-07-28 15:05:49

标签: c# sql-server ado.net

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

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

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

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

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

SET ANSI_PADDING OFF
GO

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

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

非常感谢你!

3 个答案:

答案 0 :(得分:4)

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

nchar(255)总是会给你255个字符。那些未使用的是用空格填充的(ASCII中的0x20也称为空格)。 nvarchar(255)在初始化时将分配255个字符,但仅使用必要的字符。

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

答案 1 :(得分:1)

尝试NVARCHAR而不是NCHAR。

答案 2 :(得分:1)

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