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