ADOでの連携でデータの参照を行う方法について説明します。
本サンプルコードは、取得データをWebページ上にて表示します。
アプリケーションの手順
コネクションを接続します。詳細は、“D.4.1 接続および切断”を参照してください。
Recordsetオブジェクトを生成します。
Recordset.OpenメソッドでRecordsetオブジェクトを開きます。
Recordsetオブジェクトよりデータを取得します。
Recordset.EOFプロパティでカレント行がEOFかを確認します。
Fields.Countプロパティで列数を確認します。
Field.Valueプロパティでデータを取得します。
Recordset.MoveNextメソッドでカレント行を次の行へと移動します。
Recordset.CloseメソッドでRecordsetオブジェクトを閉じます。
コネクションを切断します。
オブジェクトを破棄します。
エラー処理については、“D.4.10 エラー処理”を参照してください。
注意
Recordset.EOFプロパティでカレント行がEOFかどうか確認後は、以下のエラーがアプリケーション側で認識できなくなります。
JYP2099E デッドロックが発生しました.
JYP5014E スキーマ“@1@”の表“@2@”は占有中です.
これらのエラーをアプリケーション側で認識するタイミングは、Recordset.MoveFirstメソッドを実行するか、データを参照した時です。上記エラーを認識するためには、EOFプロパティを確認せずにMoveFirstメソッドの実行またはデータを参照してください。
ただし、SELECT文の検索結果が0件であった場合、Visual Basicの実行時エラー“3021”が発生します。エラー処理については、“D.4.10 エラー処理”を参照してください。
<%@ language="vbscript" %> <!-- #include file = "adovbs.inc" --> <html> <head> <title>データの参照</title> </head> <body bgcolor="White"> <b>データの参照</b> <hr> <% '宣言 Dim OBJdbConnection Dim RecordSetObj Dim msgstr '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 TESTTBL", OBJdbConnection, _ adOpenForwardOnly, _ adLockReadOnly, _ adCmdText '4. データの取得'最終行まで繰り返し Do Until RecordSetObj.EOF '列数の取得 For i = 0 To RecordSetObj.Fields.Count - 1 'データの取得 msgstr = msgstr & RecordSetObj.Fields(i).Value & " " Next msgstr = msgstr & "<br>" '行の位置づけ RecordSetObj.MoveNext Loop '取得データの表示 Response.Write "Recordset<br>" & msgstr '5. Recordsetオブジェクトを閉じる RecordSetObj.Close '6. コネクション切断 OBJdbConnection.Close '7. オブジェクトの破棄 Set RecordSetObj = Nothing Set OBJdbConnection = Nothing %> <hr> </body> </html>