ページの先頭行へ戻る
Symfoware Server V10.0.0/V10.0.1 アプリケーション開発ガイド(ODBCドライバ編)

D.3.4 BLOB型データの参照

BLOB型データを参照するサンプルコードについて説明します。

本サンプルコードは、1行目のBLOB型データをバイト配列に取得します。取得したBLOB型データはFileStreamオブジェクトを使用してファイルに出力します。出力したデータをイメージコントロールで表示します。事前にフォームへイメージコントロール“PictureBox1”を追加してください。なお、本サンプルで表示するBLOB型データは、あらかじめVisual Basicなどを利用して登録してください。

アプリケーションの手順

  1. OdbcConnectionオブジェクトでコネクションを接続します。詳細は、“D.3.1 接続および切断”を参照してください。

  2. OdbcDataAdapterオブジェクトを生成します。(SelectCommandTextプロパティへSELECT文を設定する)

  3. DataSetオブジェクトを生成します。

  4. OdbcDataAdapter.FillメソッドでデータをDataSetへ取得します。

  5. DataSetTables.Rows.Countプロパティで行数を取得します。

  6. DataRowオブジェクトへ1行分のデータを取り出します。

  7. IsDBNull関数でBLOB型データの列“BLB_C”にデータが存在するかを確認します。

  8. DataRowオブジェクトからBLOB型データの列を指定してバイト配列へデータを取り出します。

  9. コネクションを切断します。

  10. オブジェクトを破棄します。

エラー処理については、“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