MDB ExecuteReaderレコード取得

Visual Basic ADO.NET [Community Express]

OleDbCommand.ExecuteReaderメソッド

OleDbCommandオブジェクトのExecuteReaderメソッドと、OleDbDataReaderオブジェクトのReadメソッドを使って、Access表(MDBファイル)表から取得したレコードを、データグリッドビューに表示するプログラムを作成します。

VB Express [MDB版] サンプルプログラム

実行結果
サンプル2
  • フォームにボタンとデータグリッドビュー(DataGridView)を貼り付け
  • このデータグリッドビューに、商品マスター表の全レコードを表示
  • データグリッドビューの列見出し等のデザインは、フォームロード処理で行う
  • OleDbDataReaderのHasRowsプロパティで、レコードが取得できたかどうか調べる(True なら、取得レコードあり)
  • 列項目は、OleDBDataReader.Readで取得
  • DataGridViewRowオブジェクトのCreateCellsプロパティで各セルに値を代入
  • 【注意】接続文字列は、アプリケーション構成ファイルapp.configから取得するようにしてください。

販売管理データベース(商品マスター表

Key 列名 データ型 サイズ 値要求 空文字列の許可
商品コード テキスト型 5 はい いいえ
商品名称 テキスト型 30 はい いいえ
販売単価 数値 整数型 はい いいえ

VB Express [MDB版]

SqlCommand.ExecuteReaderでレコードを取得するサンプル

VB.NET [MDB版]

OleCommand.ExecuteReaderのサンプル

ソースリストの枠内をクリックすると全選択できます。

Option Strict On
Imports System.Data.OleDb

Public Class Form1

    '*********************************************************************
    ' ボタン押下処理
    '*********************************************************************
    Private Sub Button1_Click( _
        ByVal sender As System.Object, _
        ByVal e As System.EventArgs) Handles Button1.Click

        Try
            ' 行データクリア
            DataGridView1.Rows.Clear()

            Using con As New OleDbConnection
              Using cmd As New OleDbCommand
                  ' 接続文字列の設定(MDB)
                  con.ConnectionString = _
                      "Provider=Microsoft.Jet.OLEDB.4.0;" & _
                      "Data Source=" & Application.StartupPath & _
                      "\販売管理データベース.mdb"

                  ' OleDbCommand.Connectionプロパティの設定
                  cmd.Connection = con

                  ' DB接続
                  con.Open()

                  ' SQL文の設定
                  cmd.CommandText = _
                      "SELECT 商品コード, 商品名称, 販売単価 " & _
                      "FROM 商品マスター表 ORDER BY 商品コード"

                    ' 商品マスター表からレコード読込
                    Using dr As OleDbDataReader = cmd.ExecuteReader()
                        ' 取得レコード有無チェック
                        If dr.HasRows = True Then
                            ' レコードが取得できた時の処理
                            While dr.Read()
                                ' セルのテンプレートを設定
                                Dim row As New DataGridViewRow
                                ' セルに値をセット
                                row.CreateCells(DataGridView1)
                                ' 列インデックス取得
                                Dim idx1 As Integer
                                idx1 = dr.GetOrdinal("商品コード")
                                ' 列データを文字列として取得
                                row.Cells(0).Value = dr.GetString(idx1)
                                Dim idx2 As Integer
                                idx2 = dr.GetOrdinal("商品名称")
                                row.Cells(1).Value = dr.GetString(idx2)
                                Dim idx3 As Integer
                                idx3 = dr.GetOrdinal("販売単価")
                                row.Cells(2).Value = dr.GetInt32(idx3)
                                ' データグリッドビューに行を追加
                                DataGridView1.Rows.Add(row)
                            End While
                        Else
                            ' レコードが取得できなかった時の処理
                            MessageBox.Show("レコードがありません")
                        End If
                    End Using

              End Using
            End Using

        Catch ex As Exception
            ' 例外が発生した時の処理
            MessageBox.Show(ex.ToString)

        End Try

    End Sub

    '*********************************************************************
    ' フォームロード処理
    '*********************************************************************
    Private Sub Form1_Load( _
        ByVal sender As System.Object, _
        ByVal e As System.EventArgs) Handles MyBase.Load

        Try
            ' ---<< データグリッドビュー列スタイル設定 >>---
            ' 列を自動生成しない
            DataGridView1.AutoGenerateColumns = False

            ' 列幅を自動調整する設定
            DataGridView1.AutoSizeColumnsMode = _
                DataGridViewAutoSizeColumnsMode.AllCells

            ' 列の生成
            Dim textColumn(2) As DataGridViewTextBoxColumn

            ' 【商品コード】列を作成する
            textColumn(0) = New DataGridViewTextBoxColumn()
            ' DataGridViewのヘッダータイトル設定
            textColumn(0).HeaderText = "商品コード"

            ' 【商品名】列を作成する
            textColumn(1) = New DataGridViewTextBoxColumn()
            ' DataGridViewのヘッダータイトル設定
            textColumn(1).HeaderText = "商品名"

            ' 【販売単価】列を作成する
            textColumn(2) = New DataGridViewTextBoxColumn()
            ' DataGridViewのヘッダータイトル設定
            textColumn(2).HeaderText = "単価"
            ' セルの文字列右詰め設定
            textColumn(2).DefaultCellStyle.Alignment = _
                DataGridViewContentAlignment.MiddleRight

            ' 生成列をデータグリッドビューに追加する
            DataGridView1.Columns.AddRange(textColumn)

        Catch ex As Exception
            ' 例外が発生した時の処理
            MessageBox.Show(ex.ToString)

        End Try

    End Sub

End Class