SqlDataReaderがあり、SqlDataReader.GetBytes()メソッドを使用してそこからvarbinary(max)列を読み取る必要があります。このメソッドはバイト配列にデータを入力するため、読み取るデータの長さを知る必要があります。
これは私が混乱するところです..明らかに、この行/列でデータベースから返されたすべてのデータを読み取りたいので、どの「長さ」パラメーターを渡す必要がありますか?
私が見る限り、SqlDataReaderは、使用可能なデータの長さを検出するためのメソッドを提供していません。したがって、このメソッドは私にはかなり厄介なようです。
ここでint.MaxValueを渡して問題を忘れたくなりますが、これに関する何かが私にはぴったりではありません。
代わりに電話できることを知っています
byte[] value = (byte[])dataReader["columnName"];
..そしてこれは内部で長さの問題を完全に処理しているようです。ただし、私はSqlDataReader.GetXXXX()メソッドを中心に構築された一連の複雑なコード生成テンプレートを使用しています。したがって、私はGetBytesの使用に縛られており、その適切な使用法を理解する必要があります。