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>