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

私はそれをインポートして設定するようになった前に、私はOFF ANSI_PADDING設定(私はそれをやった私は解決策を見つけるためにGoogleを使用しますが、私が見つけた唯一の使用可能な結果が

SET ANSI_PADDING OFF 
GO 

にしました私がやったときに戻って)、しかし何も変わった。ああ、フィールド型としてNCHAR(255)を使用しています。

DataGridviewに表示されている内容をトリミングすると問題ありませんが、可能であれば、このオーバーヘッドを避けたい(結局のところ、すべての行と列を表示する必要があります。多くのデータ(数千の行)を扱うことは最高の解決策ではありません。私は何をすべきか?

ありがとうございます!

答えて

4

静的長さ255のnchar(255)を使用しています。列をnvarchar(255)に変更してみてください。

nchar(255)は常に255文字です。使用されていないものは、空白(ASCIIでは別名0x20)で埋められます。 nvarchar(255)は、初期化時に255文字を割り当てますが、必要な文字のみを使用します。

この場合、可変長の文字列があるので、nvarchar(255)が必要です。

+0

ありがとうございます! – ShdNx

1

NCHARではなくNVARCHARを試してください。

1

NCHARは固定長フィールドです。 NVARCHARをデータ型として使用すると、スペースを取得できなくなります。

+0

ありがとう!残念ながら、エリックは最も詳細な答えを出したので、私は彼の答えを受け入れましたが、+1も得ました。 – ShdNx

関連する問題