SqlCommand.ExecuteReaderメソッド
SqlCommandオブジェクトのExecuteReaderメソッドと、SqlDataReaderオブジェクトのReadメソッドを使って、表から取得したレコードをデータグリッドビューに表示するプログラムを作成します。
VB Express [SQL Server 2008版] サンプルプログラム
検索ボタンをクリックすると
- フォームにボタンとデータグリッドビュー(DataGridView)を貼り付け
- このデータグリッドビューに、商品マスター表の全レコードを表示
- データグリッドビューの列見出し等のデザインは、フォームロード時に設定
- テーブルの列項目は、SqlDataReader.Readで取得
- 各セルの値は、DataGridViewRowオブジェクトのCreateCellsプロパティを使って代入
- SqlDataReaderのHasRowsプロパティで、取得レコードの有無を調べる(True なら、取得レコードあり)
- 接続文字列は、できるだけアプリケーション構成ファイルapp.configから取得するようにして下さい。
Key | 列名 | データ型 | NULLを許容 |
---|---|---|---|
● | 商品コード | nchar(5) | しない |
商品名称 | nvarchar(30) | しない | |
販売単価 | int | しない |
OleDbCommand.ExecuteReaderでレコードを取得するサンプルはこちら
OleCommand.ExecuteReaderのサンプルはこちら
ソースリストの枠内をクリックすると全選択できます。
Option Strict On Imports System.Data.SqlClient Public Class Form1 '********************************************************************* ' 検索ボタン押下処理 '********************************************************************* Private Sub Button1_Click( _ ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles Button1.Click Try ' 行データクリア Me.DataGridView1.Rows.Clear() Using con As New SqlConnection Using cmd As New SqlCommand ' 接続文字列の設定(SQL Server 2008 Express Edition) con.ConnectionString = _ "Data Source=.\SQLEXPRESS;" & _ "AttachDbFilename=" & _ "'C:\Program Files\Microsoft SQL Server" & _ "\MSSQL10.SQLEXPRESS2008\MSSQL\DATA" & _ "\販売管理データベース.mdf';" & _ "Integrated Security=True;" & _ "Connect Timeout=30;" & _ "User Instance=True" ' SqlCommand.Connectionプロパティの設定 cmd.Connection = con ' DB接続 con.Open() ' SQL文の設定 cmd.CommandText = _ "SELECT 商品コード, 商品名称, 販売単価 " & _ "FROM 商品マスター表 ORDER BY 商品コード" ' 商品マスター表からレコード読込 Using dr As SqlDataReader = cmd.ExecuteReader() ' 取得レコード有無チェック If dr.HasRows = True Then ' レコードが取得できた時の処理 While dr.Read() ' セルのテンプレートを設定 Dim row As New DataGridViewRow row.CreateCells(Me.DataGridView1) ' セルに値をセット row.Cells(0).Value = Cstr(dr("商品コード")) row.Cells(1).Value = Cstr(dr("商品名称")) row.Cells(2).Value = Cint(dr("販売単価")) ' データグリッドビューに行を追加 Me.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 ' ---<< データグリッドビュー列スタイル設定 >>--- ' 列を自動生成しない Me.DataGridView1.AutoGenerateColumns = False ' 列幅を自動調整 Me.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 ' 生成列をDataGridViewに追加 Me.DataGridView1.Columns.AddRange(textColumn) Catch ex As Exception ' 例外が発生した時の処理 MessageBox.Show(ex.ToString) End Try End Sub End Class