由于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中显示的内容,那很好,但是如果可能的话,我想避免这种开销(毕竟,我必须遍历显示的所有行和列,因为我是处理大量数据 - 几千行 - 这不是最好的解决方案。我该怎么办?
非常感谢你!
答案 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作为您的数据类型将使您无法获取空格。