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

D.4.3 BLOB型データの参照

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

本サンプルコードは、GetChunkメソッドで16384バイトずつBLOB型データを取得します。取得したBLOB型データはResponse.BinaryWriteメソッドを使用してWebページに表示します。なお、本サンプルではGIFを表示するため、BLOB型データは予めVisual Basicなどを利用して登録してください。

アプリケーションの手順

  1. コネクションを接続します。詳細は、“D.4.1 接続および切断”を参照してください。

  2. Recordsetオブジェクトを生成します。

  3. Recordset.OpenメソッドでRecordsetオブジェクトを開きます。

  4. Recordsetオブジェクトよりデータを取得します。
    Recordset.BOFプロパティでカレント行がBOFかを確認します。
    Recordset.EOFプロパティでカレント行がEOFかを確認します。
    Field.ActualSizeプロパティで取得データのバイト数を確認します。
    Field.GetChunkメソッドで指定バイト数分データを取得します。

  5. Recordset.CloseメソッドでRecordsetオブジェクトを閉じます。

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

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

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

<%@ language="vbscript" %>
<!-- #include file = "adovbs.inc" -->
<%
'宣言
Dim OBJdbConnection
Dim RecordSetObj

Dim Chunks
Dim Fragment
Const ChunkSize = 16384
Dim I

'Connectionオブジェクトの生成と設定
Set OBJdbConnection = Server.CreateObject("ADODB.Connection")
OBJdbConnection.ConnectionString = "DSN=DSN01;UID=USER01;PWD=PASS01"

'1. コネクション接続
OBJdbConnection.Open

'2. Recordsetオブジェクトの生成
Set RecordSetObj = Server.CreateObject("ADODB.Recordset")

'3. Recordsetオブジェクトを開く
RecordSetObj.Open "SELECT * FROM IMGTBL", OBJdbConnection, _
                  adOpenForwardOnly, _
                  adLockReadOnly, _
                  adCmdText

If NOT (RecordSetObj.BOF AND RecordSetObj.EOF) Then

    '4. データの取得
    'BLOB型データのサイズを取得
    Fl = RecordSetObj.Fields("BLB_C").ActualSize

    'BLB_C列にデータがあるか
    If Fl > 0 Then
        '規定量にデータを分けて取得するため、分割数と残量を求める
        Chunks = Fl \ ChunkSize
        Fragment = Fl Mod ChunkSize

        'GIFデータであることを指定する
        'Response.ContentType = "image/gif"

        '残量分のデータを取得
        'Response.BinaryWrite RecordSetObj.Fields("BLB_C").GetChunk(Fragment)

        '分割数分繰り返し
        For i = 1 To Chunks
            '規定量分のデータ取得
            'Response.BinaryWrite RecordSetObj.Fields("BLB_C").GetChunk(ChunkSize)
        Next

    End If

End If

'5. Recordsetオブジェクトを閉じる
RecordSetObj.Close

'6. コネクション切断
OBJdbConnection.Close

'7. オブジェクトの破棄
Set RecordSetObj = Nothing
Set OBJdbConnection = Nothing

%>