こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

DB画像Image型→ローカル保存について

環境:
vb.net 2008 express
sqlserver2005 express
DB odbc接続

DBに画像ファイルimage型で保存

DBの画像データをローカルに指定した拡張子で出力。

する機能をシステムに追加したいと考えています。
この際、参考になるサイトなどあれば
ご教授ください。

投稿日時 - 2009-07-06 13:21:18

QNo.5102795

困ってます

質問者が選んだベストアンサー

参考になるサイトは意外とないような気がするのですが、とりあえず最もベーシックな構造はこんな感じです。
(これ以外にも方法はありますが)
なお、IMAGE型は古い型なので、varbinary(MAX)を使いましょう。

Using sqlConn As New SqlConnection("接続文字列")
  sqlConn.Open()
  Dim strSQL As String = "SELECT 画像データ FROM 画像テーブル WHERE SEQ=1"
  Using sqlCmd As New SqlCommand(strSQL, sqlConn)
    Using sdr As SqlDataReader = sqlCmd.ExecuteReader
      Do While sdr.Read
        Dim fs As New FileStream("C:\画像.jpg", FileMode.CreateNew)
        Dim bw As New BinaryWriter(fs)
        bw.Write(CType(sdr.Item(0), Byte()))
        bw.Close()
        fs.Close()
      Loop
    End Using
  End Using
  sqlConn.Close()
End Using

投稿日時 - 2009-07-06 18:17:43

お礼

すばらしい!ありがとうございます。

ちなみにこの場合、すでにファイルが存在していた場合は
上書き保存になるんでしょうか。
ストリームだから、そうなのかな。早速この後試してみます。

投稿日時 - 2009-07-06 18:49:12

このQ&Aは役に立ちましたか?

10人が「このQ&Aが役に立った」と投票しています

-広告-
-広告-

回答(2)

ANo.2

#1です。
上書きにならず、エラーになります。
あくまでバイナリハンドリングのサンプルなので、その辺は端折っています。VB側でハンドリングしてあげてください。

投稿日時 - 2009-07-06 20:03:45

お礼

なるほど、了解しました。
ありがとうございます。

投稿日時 - 2009-07-06 21:09:40

-広告-
-広告-
-広告-
-広告-