ページの先頭行へ戻る
Symfoware Server V10.0.0 アプリケーション開発ガイド(ODBCドライバ編)

C.4.2 データの参照

ADO連携でデータの参照を行う方法について説明します。

本サンプルコードは、取得データをメッセージボックスにて表示します。

アプリケーションの手順

  1. コネクションを接続します。詳細は、“C.4.1 接続および切断”を参照してください。

  2. Recordsetオブジェクトを生成します。

  3. Recordset.OpenメソッドでRecordsetオブジェクトを開きます。

  4. Recordsetオブジェクトよりデータを取得します。
    Recordset.EOFプロパティでカレント行がEOFかを確認します。
    Fields.Countプロパティで列数を確認します。
    Field.Valueプロパティでデータを取得します。
    Recordset.MoveNextメソッドでカレント行を次の行へと移動します。

  5. Recordset.CloseメソッドでRecordsetオブジェクトを閉じます。

  6. コネクションを切断します。

  7. オブジェクトを破棄します。

エラー処理については、“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:

'エラー処理ルーチンを記述