2009-07-28 128 views
0

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

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

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

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

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

SET ANSI_PADDING OFF 
GO 

我做到了(所以我SET ANSI_PADDING OFF之前,我就开始导入和设置当我完成后回到ON),但没有任何改变。噢,我使用NCHAR(255)作为字段类型。

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

非常感谢您提前!

回答

4

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

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

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

+0

非常感谢! – ShdNx 2009-07-28 15:19:33

1

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

+0

谢谢!不幸的是,埃里克给出了最详细的答案,所以我接受了他的答案,但你也得到了+1。 – ShdNx 2009-07-28 15:20:26