web-dev-qa-db-ja.com

SqlCommandパラメーターサイズの混乱

次のコード行があります。

sqlcommand.Parameters.Add("@LinkID", SqlDbType.Int, 4).Value = linkID;

しかし、私はsizeの使用について少し混乱しています。これは、サイズが4バイトだということですか?または4の長さなので1234は許容されますが、12345大きすぎますか?

20
Neil Knight

サイズが修正されたタイプの場合、この引数は省略してください。単純に次のようになります。

sqlcommand.Parameters.Add("@LinkID", SqlDbType.Int).Value = linkID;

Size引数は、varcharnvarcharなどの可変サイズを持つことができるタイプのパラメーターにのみ関連します。

27
BrokenGlass

Intのサイズは4バイトです。

詳細については、 msdのDbParameterクラス nを参照してください。 SqlCeParameterDbParameterを実装しているので関連性があります

次のセクションが関連しています。

Sizeプロパティは、バイナリタイプと文字列タイプに使用されます。

非文字列データ型およびANSI文字列データの場合、Sizeプロパティはバイト数を参照します。 Unicode文字列データの場合、サイズは文字数を指します。文字列のカウントには、終了文字は含まれません。

可変長データ型の場合、サイズはサーバーに送信するデータの最大量を表します。たとえば、Unicode文字列値の場合、Sizeを使用して、サーバーに送信されるデータの量を最初の100文字に制限できます。

Sizeプロパティの実装については、これを参照してください https://Gist.github.com/1932766

6
Filip De Vos

4バイト32ビットです。 32ビット整数です。

2
Mark Dickinson

あなたがintに行くのなら、私が思うよりも、それのサイズに関係なくあります。

だからあなたのコードは

sqlcommand.Parameters.Add("@LinkID", SqlDbType.Int).Value = linkID; 

サイズがmaaterであるvarchar、navarcharの場合は、.netコード、つまりパラメータでサイズを指定する必要があります。

2
Pranay Rana