2012-12-19 1 views
12

varbinary(MAX)というパラメータを持つテーブルがあります。クエリを実行した後、出力として複数の列を持つので、結果をSqlDataReaderに格納します。SqlDataReaderからbyte []を取得しますか?

SqlCommand cmd = new SqlCommand("select leave_details from LeaveTable"); 
SqlDataReader obj; 
con.Open(); 
obj = cmd.ExecuteReader(); 

ここで、各行の結果をbyte []に​​変換します。

この1つは動作していない:

byte[] b=null; 
obj.GetBytes(0,0,b,0,1024); 
+1

?あなたは例外、間違った結果、またはbsodを取得しますか? –

+0

@TimSchmelter:彼が使用しようとしたAPI呼び出しは明らかに間違っています。私はそれを使用するために必要な他のAPI(フェッチするバイナリBLOBの長さ)が完全に欠けているので、それがなぜ存在するのかわかりません。 – Joshua

答えて

27

GetValue()方法を試してみてください。 "この1つが動作していない" という意味は何

byte[] b=null; 
b=(byte [])obj.GetValue(0); 
//OR 
b=(byte [])obj[0]; 
+0

ありがとう!!出来た。 – akshaykumar6

-2
string bytesfromsql = "01010101010110010111010001"; //for example 
byte[] bytes = new byte[bytesfromsql.Length]; 
for (int i = 0; i < bytes.Count(); i++) 
{ 
    bytes[i] = byte.Parse(bytesfromsql[i].ToString()); 
} 
+6

SQL **から戻ってくるバイトは文字列ではありません**。また、それがあったとしても、*基数*(base-2?base-10?base-16?)を指定するのに 'Convert.ToByte(string、int) 'を使う必要があります。文字列の長さはデコードされたbyte []の長さではありません。ベース16の場合、入力文字列の半分の長さになります。例えば、 –

+0

あなたにはprogrammopedia –

関連する問題