BLOB型データを参照するサンプルコードについて説明します。
本サンプルコードは、GetChunkメソッドで16384バイトずつBLOB型データを取得します。取得したBLOB型データはResponse.BinaryWriteメソッドを使用してWebページに表示します。なお、本サンプルではGIFを表示するため、BLOB型データは予めVisual Basicなどを利用して登録してください。
アプリケーションの手順
コネクションを接続します。詳細は、“D.4.1 接続および切断”を参照してください。
Recordsetオブジェクトを生成します。
Recordset.OpenメソッドでRecordsetオブジェクトを開きます。
Recordsetオブジェクトよりデータを取得します。
Recordset.BOFプロパティでカレント行がBOFかを確認します。
Recordset.EOFプロパティでカレント行がEOFかを確認します。
Field.ActualSizeプロパティで取得データのバイト数を確認します。
Field.GetChunkメソッドで指定バイト数分データを取得します。
Recordset.CloseメソッドでRecordsetオブジェクトを閉じます。
コネクションを切断します。
オブジェクトを破棄します。
エラー処理については、“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
%>