BLOB型データを参照するサンプルコードについて説明します。
本サンプルコードは、1行目のBLOB型データをバイト配列に取得します。取得したBLOB型データはFileStreamオブジェクトを使用してファイルに出力します。出力したデータをイメージコントロールで表示します。事前にフォームへイメージコントロール“PictureBox1”を追加してください。なお、本サンプルで表示するBLOB型データは、あらかじめVisual Basicなどを利用して登録してください。
アプリケーションの手順
OdbcConnectionオブジェクトでコネクションを接続します。詳細は、“D.3.1 接続および切断”を参照してください。
OdbcDataAdapterオブジェクトを生成します。(SelectCommandTextプロパティへSELECT文を設定する)
DataSetオブジェクトを生成します。
OdbcDataAdapter.FillメソッドでデータをDataSetへ取得します。
DataSetTables.Rows.Countプロパティで行数を取得します。
DataRowオブジェクトへ1行分のデータを取り出します。
IsDBNull関数でBLOB型データの列“BLB_C”にデータが存在するかを確認します。
DataRowオブジェクトからBLOB型データの列を指定してバイト配列へデータを取り出します。
コネクションを切断します。
オブジェクトを破棄します。
エラー処理については、“D.3.9 エラー処理”を参照してください。
'オブジェクト宣言
Dim con As Microsoft.Data.Odbc.OdbcConnection
Dim adp As Microsoft.Data.Odbc.OdbcDataAdapter
Dim dst As DataSet
Dim myRow As DataRow
Dim MyData() As Byte
Dim fs As System.IO.FileStream
Dim K As Long
'OdbcConnectionオブジェクトの生成
con = New Microsoft.Data.Odbc.OdbcConnection("DSN=DSN01;UID=USER01;PWD=PASS01")
Try
'1. コネクション接続
con.Open()
'2. OdbcDataAdapterオブジェクトの生成
adp = New Microsoft.Data.Odbc.OdbcDataAdapter("SELECT * FROM IMGTBL", con)
'3. DataSetオブジェクトの生成
dst = New DataSet
'4. DataSet オブジェクトへデータを取得
adp.Fill(dst, "IMGTBL")
'5. 結果列が存在するか
If dst.Tables("IMGTBL").Rows.Count > 0 Then
'6. 1行分のデータをDataRowオブジェクトへ取り出す
myRow = dst.Tables("IMGTBL").Rows(0)
'7. BLB_C列にデータがあるか
If Not IsDBNull(myRow("BLB_C")) Then
'BLB_C列にデータが存在する場合
'8. BLOB型データの取り出し
MyData = myRow("BLB_C")
'FileStreamオブジェクトの生成(ファイルを開く)
fs = New System.IO.FileStream _
(Server.MapPath("C.BMP"), System.IO.FileMode.OpenOrCreate, _
System.IO.FileAccess.Write)
'BLOB型データのサイズを取得
K = UBound(MyData)
'BLOB型データをファイルへ書き込む
fs.Write(MyData, 0, K)
'FileStreamオブジェクトを閉じて破棄する
fs.Close()
fs = Nothing
'出力したファイルをImageコントロールで表示する
Image1.ImageUrl = "C.BMP"
End If
End If
'9. コネクション切断
con.Close()
'10. オブジェクトの破棄
con.Dispose()
dst.Dispose()
adp.Dispose()
'エラー処理
Catch ex As Microsoft.Data.Odbc.OdbcException
'エラー処理ルーチンを記述
End Try