SQLServerCEのImage型における画像データの取扱い

環境
・SQLServer CompactEdition 3.5
・VisualStudio2010 SP1 (VB)

SQLServerのImage型は廃止予定らしいので、あまり一生懸命追いかけなくてもいいと思うのですが、
Image型を使用して画像の出し入れをする必要に迫られたので、描いておきます。

○テーブル構造 (テーブル名:PilotData)
UserID     nvarchar(50)
UserName   nvarchar(100)
Photo1      image


1.Image型に画像データを格納する

'画像データをバイト配列にする。
Dim stream As New System.IO.FileStream("C:\asuka.jpg", IO.FileMode.Open, IO.FileAccess.Read)
Dim reader As New System.IO.BinaryReader(stream)
Dim photo As Byte() = reader.ReadBytes(stream.Length)
reader.Close()
stream.Close()

'SQLCeConnectionオブジェクトの用意
Dim conn as New SqlCeConnection("Data Source=|DataDirectory|\NERV.sdf")
conn.Open()

’SQLCeCommandオブジェクトの用意
Dim cmd As New System.Data.SqlServerCe.SqlCeCommand
'SQL文の設定
cmd.CommandText = "INSERT INTO PilotData(UserID, UserName, Photo1) VALUES (@UserID, @UserName, @Photo1)
’パラメータの格納
cmd.Parameters.Add("@UserID", SqlDbType.NVarChar).Value = "Asuka"
cmd.Parameters.Add("@UserName", SqlDbType.NVarChar).Value = "アスカ・ラングレー"
cmd.Parameters.Add("@Photo1", SqlDbType.Image, photo.Length).Value = photo
’コネクションオブジェクトとの紐付け
cmd.Connection = conn

'実行
cmd.ExecuteNonQuery()
;


2.Image型から画像データを取り出しPictureBoxに表示する。

'SQLCeConnectionオブジェクトの用意
Dim conn as New SqlCeConnection("Data Source=|DataDirectory|\NERV.sdf")
conn.Open()

’SQLCeCommandオブジェクトの用意
Dim cmd As New System.Data.SqlServerCe.SqlCeCommand
'SQL文の設定
cmd.CommandText = "SELECT * FROM PilotData WHERE UserID = @UserID "
’パラメータの格納
cmd.Parameters.Add("@UserID", SqlDbType.NVarChar).Value = "Asuka"
’コネクションオブジェクトとの紐付け
cmd.Connection = conn

'実行
Dim ds As New DataSet
Using adapter As New SqlCeDataAdapter(cmd)
   adapter.Fill(ds)
End Using

'データをPictureBoxに表示する。
Dim b As Byte() = DirectCast(ds.Tables(0).Rows(0)("Photo1"), Byte())
Dim stm As New MemoryStream(b)
PictureBox1.Image = System.Drawing.Image.FromStream(stm)
stm .Dispose()
;

広告

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中