2009-07-28 283 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