2011-02-09 36 views
7

SQL Server 2008からデータ行を読み取る必要があります。列の種類はVARBINARY(MAX)です。 C#で私はそれを読むためにパラメータを使いたい(そして、与えられたシナリオはほとんどの場合ニーズを満たす)。SQL ServerからC#へのVARBINARY(MAX)の読み取り

しかし、変数のサイズを指定してC#変数を指定する必要があります。 ここで私は8000が十分であることを前提とし...しかし、誰もが知っている:

database.AddOutParameter(command, "vbCertificate", DbType.Binary, 8000); 

だから、質問は次のとおりです。

  1. SQL Server 2008の数がMAXの大きさは何ですか?
  2. このシナリオでは、このパラメータを使用しても問題ありませんか?

答えて

4

@marc_sが言ったように、私は何かを追加したいだけです。

2つのデータ型は、nは1から8,000スルー値であるnバイトの長さ

固定長のバイナリデータは、

バイナリ [(N)]があります。記憶領域のサイズはnバイトです。

VARBINARY [(N | MAX)]

可変長のバイナリデータ。 nは1〜8,000の値にすることができます。 maxは、最大ストレージサイズが2^31-1(int.MaxValueに等しい、つまり2,147,483,647)バイトであることを示します。ストレージサイズは、入力されたデータの実際の長さ+ 2バイトです。入力されるデータの長さは0バイトです。あなたは最大を指定している場合は、あなたの懸念事項ではなく、バイナリ

database.AddOutParameter(コマンド、 "vbCertificate"、DbType.Binary、8000)のvarbinary型で

する必要があります。

database.AddOutParameter(コマンド、 "vbCertificate"、SqlDbType.VarBinary、int.MaxValue);

+0

差をつけてくれてありがとう! –

1

MAXのどこにでも明示的なサイズはありませんでした。 DbType.Objectを使ってこれを実行しようとしましたか?これは、明示的に定義されていない型の一般的な型としてmsdnで定義されています。私はそれを試み、それがうまくいくかどうかを見ます。それ以外の場合は、DbType.Binaryに固執します。

5

VARBINARY(MAX)の最大サイズは2'147'483'648バイトです。

あなたのケースでは、C#で定義するときは、値としてint.MaxValueを使用することをお勧めします。

はい、SQL Server 2008テーブルからバイトの配列を戻したい場合は、最も確実にoutパラメータを使用できます。

+3

最大型のSqlClientサイズは「-1」です。フレームワークはこれを 'max'型として理解しています。 –

+0

@Remus Rusanu:ありがとう、知りたい! (でも、私はint.MaxValueに問題はありませんでしたが、これまでのところ:-) –

+0

ええ、int.MaxValueは私のためによく見えます。 –

関連する問題