|
分類:[.NET 全般]
C#を使用してSQLServerにファイルをアップロードして、その後ダウンロードして保存というシステムを作成しています。 アップロードに使用するINSERT文のバイナリ部分は以下のようにして行っています。 "0x" + string.Join("",binData.Select(p => Convert.ToString(p,16)));
「binData」がByte[]の変数です。
で、抽出する際は以下のように行っています。 Byte binData = (Byte[])reader["IMAGE"];
「reader」がSqlDataReader変数で、"IMAGE"がDBのカラム名です。
このようにやると例として以下のように0の部分のデータがおかしくなります。 binData[0] = 255 binData[1] = 161 binData[2] = 0 binData[3] = 0 binData[4] = 177 これをSQL文には以下のように変換します。 "0xFFA100B1"
これをDBに保存まではできているのですが、SELECTして復元すると binData[0] = 255 binData[1] = 161 binData[2] = 0 binData[3] = 177
のようになっています。 どうも2文字ずつ読み込んで"00"の部分を0として認識しているように思えます。
なにか変更すべき点はありますでしょうか?
|