OleDbCommand.ExecuteReaderメソッド
OleDbCommandオブジェクトのExecuteReaderメソッドと、OleDbDataReaderオブジェクトのReadメソッドを使って、Access表(MDBファイル)表から取得したレコードを、データグリッドビューに表示するプログラムを作成します。
VB Express [MDB版] サンプルプログラム
実行結果
- フォームにボタンとデータグリッドビュー(DataGridView)を貼り付け
- このデータグリッドビューに、商品マスター表の全レコードを表示
- データグリッドビューの列見出し等のデザインは、フォームロード処理で行う
- OleDbDataReaderのHasRowsプロパティで、レコードが取得できたかどうか調べる(True なら、取得レコードあり)
- 列項目は、OleDBDataReader.Readで取得
- DataGridViewRowオブジェクトのCreateCellsプロパティで各セルに値を代入
- 【注意】接続文字列は、アプリケーション構成ファイルapp.configから取得するようにしてください。
Key | 列名 | データ型 | サイズ | 値要求 | 空文字列の許可 |
---|---|---|---|---|---|
● | 商品コード | テキスト型 | 5 | はい | いいえ |
商品名称 | テキスト型 | 30 | はい | いいえ | |
販売単価 | 数値 | 整数型 | はい | いいえ |
SqlCommand.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