ページの先頭行へ戻る
Symfoware Server V10.0.0/V10.0.1 アプリケーション開発ガイド(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:

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