2011-12-21 2 views
0

私はVisual Studio 2010をこのC#プログラムに使用しています。SqlCeEngineクラスによって作成されたローカルデータベースに保存するキャッシュを生成しています。私はSqlCeEngineクラスを使用してこのデータベースを100%プログラム的に作成したいが、私はまだデータベースに新しいものがあるのに対し、MS SQLデータ型を使用してCREATE TABLEの例を見つけるのに問題がある。 。C#でSqlCeEngineクラスで作成されたデータベースに可変長テキストを保存するにはどうすればよいですか?

PRIMARY KEYとしてUniqueID列を持つテーブルを作成したいが、理想的にはこの生成されたキャッシュが2^15エントリまたは1500エントリを超えてはならないため、smallintをデータ型として使用すること。しかし、テキストを保持する2番目の列も作成したいとしますが、それがどれくらい前になるかを判断するのは難しいです。私は平均して8文字以下を期待していますが、260文字を超える場合があります。私は文字列のサイズを文字列の最大長(4000文字だと思う)に設定することができますが、このプロジェクトではキャッシュによるスペース消費を最小限に抑える必要があり、それは多くの時間を無駄にすると思いますスペースのncharとnvarcharのデータ型があることに気付きましたが、両方とも宣言するためには長さが必要なため、実際には違いはわかりませんでした。 SqlCeEngineのフードの下で、長さの違う文字列を他の文字列よりも友好的にするかもしれないと思っていたようです。

TL; DR

スペースを無駄にすることなく、主キー列と第2列の可変長テキストのSMALLINTデータ型を使用SqlCeEngineクラスを使用してC#でSQLデータベースを宣言するが方法はありますか?

+3

「スペースを無駄にする」を定義します。ちょうど 'NVARCHAR(500)'程度を使用してください。 –

答えて

1

ユニコード文字を格納している場合を除き、varcharを使用したい場合は、nvarcharを使用します。

char(50)varchar(50)の違いは、char(50)は、使用されているかどうかに関わらず、50文字を取得して保持するということです。 varchar(50)は最大50文字まで使用できますが、0を使用するとスペースは予約されません。

フィールドchar(20)があり、値が 'Name'の場合、そのフィールドのサイズは20文字、指定した4文字、さらに16文字になります。 varchar(20)があり、値が 'Name'の場合、サイズは4になります。

+1

SQL Server Compactはncharとnvarchar(+ ntext) – ErikEJ

+0

をサポートしていますので、varcharの代わりにnvarcharを使用してください。 'n'は、各文字をマルチバイト(たとえば、Unicode) – taylonr

関連する問題