ADO連携でデータの参照を行う方法について説明します。
本サンプルコードは、取得データをメッセージボックスにて表示します。
アプリケーションの手順
コネクションを接続します。詳細は、“C.4.1 接続および切断”を参照してください。
Recordsetオブジェクトを生成します。
Recordset.OpenメソッドでRecordsetオブジェクトを開きます。
Recordsetオブジェクトよりデータを取得します。
Recordset.EOFプロパティでカレント行がEOFかを確認します。
Fields.Countプロパティで列数を確認します。
Field.Valueプロパティでデータを取得します。
Recordset.MoveNextメソッドでカレント行を次の行へと移動します。
Recordset.CloseメソッドでRecordsetオブジェクトを閉じます。
コネクションを切断します。
オブジェクトを破棄します。
エラー処理については、“C.4.10 エラー処理”を参照してください。
注意
Recordset.EOFプロパティでカレント行がEOFかどうか確認後は、以下のエラーがアプリケーション側で認識できなくなります。
JYP2099E デッドロックが発生しました.
JYP5014Eスキーマ“@1@”の表“@2@”は占有中です.
これらのエラーをアプリケーション側で認識するタイミングは、Recordset.MoveFirstメソッドを実行するか、データを参照した時です。上記エラーを認識するためには、EOFプロパティを確認せずにMoveFirstメソッドの実行またはデータを参照してください。
ただし、SELECT文の検索結果が0件であった場合、Visual Basicの実行時エラー“3021”が発生します。エラー処理については、“C.4.10 エラー処理”を参照してください。
'オブジェクト宣言 Dim Con As ADODB.Connection Dim Rst As ADODB.Recordset Dim i As Integer Dim msgstr As String 'Connectionオブジェクトの生成と設定 Con = New ADODB.Connection() Con.ConnectionString = "DSN=DSN01;UID=USER01;PWD=PASS01;" On Error GoTo ErrorProc '1. コネクション接続 Con.Open() '2. Recordsetオブジェクトの生成 Rst = New ADODB.Recordset() '3. Recordsetオブジェクトを開く Rst.Open("SELECT * FROM TESTTBL", Con, _ ADODB.CursorTypeEnum.adOpenForwardOnly, _ ADODB.LockTypeEnum.adLockReadOnly, _ ADODB.CommandTypeEnum.adCmdText) '4. データの取得 'EOFまで繰り返し Do Until Rst.EOF 'データ取得文字列の初期化 msgstr = "" '列数の取得 For i = 0 To Rst.Fields.Count - 1 'データの取得 msgstr &= Rst.Fields(i).Value() & " " Next 'メッセージボックスの表示 MessageBox.Show(msgstr, "Recordset", MessageBoxButtons.OK, _ MessageBoxIcon.None) '行の位置づけ Rst.MoveNext() Loop '5. Recordsetオブジェクトを閉じる Rst.Close() '6. コネクション切断 Con.Close() '7. オブジェクトの破棄 Rst = Nothing Con = Nothing Exit Sub 'エラー処理 ErrorProc: 'エラー処理ルーチンを記述