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 %>