ページの先頭行へ戻る
Symfoware Server V12.7.0 アプリケーション開発ガイド(ODBCドライバ編)
FUJITSU Software

C.3.4 BLOB型データの参照

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

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

アプリケーションの手順

  1. OdbcConnectionオブジェクトでコネクションを接続します。詳細は、“C.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. オブジェクトを破棄します。

エラー処理については、“C.3.9 エラー処理”を参照してください。

Public Class _Default
    Inherits Page

    Protected Sub Page_Load(ByVal sender As Object, ByVal e As EventArgs) Handles Me.Load
        'オブジェクト宣言
        Dim con As System.Data.Odbc.OdbcConnection
        Dim adp As System.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 System.Data.Odbc.OdbcConnection("DSN=DSN01;UID=USER01;PWD=PASS01")

        Try
            '1. コネクション接続
            con.Open()

            '2. OdbcDataAdapterオブジェクトの生成
            adp = New System.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 System.Data.Odbc.OdbcException

            'エラー処理ルーチンを記述

        End Try

    End Sub
End Class