テーブルの全レコード取得
CommandオブジェクトのExecuteReaderメソッドと、DataReaderオブジェクトのReadメソッドを使って、テーブルから全レコードを取得するサンプルプログラム。
Command.ExecuteReader
- VB 2008 SQL Server 版:データグリッドビューに表示するサンプルプログラム
- VB 2008 MDB版:データグリッドビューに表示するサンプル
MDB版:サンプルプログラム
あらかじめ、OleDbCommand.ExecuteScalarメソッドで、社員テーブル表の全レコード数を求め、レコード数分のsyain配列要素を確保します。
そして、OleDbCommand.ExecuteReaderメソッドを実行して、全レコードデータをsyain配列に取得します。
ソースリストの枠内をクリックすると全選択できます。
Imports System.Data.OleDb ' 社員テーブル構造体 Public Structure structSyain Public syainCode As String ' 社員コード Public syainSimei As String ' 社員氏名 Public syainKana As String ' 社員カナ名 Public bumonCode As String ' 部門コード Public nyusyaBi As DateTime ' 入社年月日 Public kosin As DateTime ' 更新日時 End Structure Public Class FormSelectAll Inherits System.Windows.Forms.Form #Region " Windows フォーム デザイナで生成されたコード " ' 自動生成部分省略 #End Region '-------------------------------------------------- ' フォームロード処理 '-------------------------------------------------- Private Sub FormSelectAll_Load( _ ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles MyBase.Load ' 全レコードを取得してコンソールに出力 Dim syain() As structSyain = Nothing Dim rec As String = "" Dim i As Integer = 0 Dim count As Integer = 0 ' 社員テーブル全レコードの列値取得 Try count = GetSyainAll(syain) If count > 0 Then ' 取得レコードの確認 For i = 0 To syain.Length - 1 rec = (i + 1).ToString + "件目==>" rec += " 社員コード:" + syain(i).syainCode rec += ", 社員氏名:" + syain(i).syainSimei rec += ", 社員カナ:" + syain(i).syainKana rec += ", 部門コード:" + syain(i).bumonCode rec += vbCrLf + Space(9) rec += "入社日:" + CStr(syain(i).nyusyaBi) rec += ", 更新日時:" + CStr(syain(i).kosin) Trace.WriteLine(rec) Next Else ' レコードが取得できなかった時の処理 MessageBox.Show("レコードがありません", "エラー") End If Catch ex As Exception ' 例外が発生した時の処理 MessageBox.Show(ex.ToString) End Try End Sub '-------------------------------------------------- ' 社員テーブルから全レコードを取得 '-------------------------------------------------- Private Function GetSyainAll( _ ByRef syain() As structSyain) As Integer Dim con As New OleDbConnection() Dim cmd As New OleDbCommand() Try ' DB接続文字列の設定 ' プロジェクトフォルダ下のbinフォルダにsample.mdbを置く con.ConnectionString = _ "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & _ Application.StartupPath & "\sample.mdb" ' コネクションの設定 cmd.Connection = con ' DB接続 con.Open() ' 社員テーブルの全レコード数を取得するSQL文 cmd.CommandText = _ "SELECT COUNT(*) FROM 社員テーブル" ' 社員テーブルのレコード数取得 Dim count As Integer = CInt(cmd.ExecuteScalar) ' レコード有無チェック(0件検査) If Count > 0 Then '------<< レコードが取得できた時の処理 >>------ ' syainのサイズを社員テーブルのレコード数に変更 ReDim Preserve syain(count - 1) ' 全レコードを取得するSQL文 cmd.CommandText = _ "SELECT * FROM 社員テーブル ORDER BY 社員コード" ' 社員テーブルからレコード読込 Dim dr As OleDbDataReader dr = cmd.ExecuteReader() Try Dim i As Integer = -1 While dr.Read() i = i + 1 syain(i).syainCode = CStr(dr("社員コード")) syain(i).syainSimei = CStr(dr("社員氏名")) ' 社員カナのNULL値判定 If IsDBNull(dr("社員カナ")) Then syain(i).syainKana = "" Else syain(i).syainKana = CStr(dr("社員カナ")) End If syain(i).bumonCode = CStr(dr("部門コード")) syain(i).nyusyaBi = CDate(dr("入社年月日")) syain(i).kosin = CDate(dr("更新日時")) End While Catch ex As Exception ' 例外が発生した時の処理 Throw New Exception(ex.ToString) Finally ' データリーダクローズ If Not dr Is Nothing Then dr.Close() End If End Try End If Return count ' ◆リターン Catch ex As Exception ' 例外が発生した時の処理 Throw New Exception(ex.ToString) Finally ' DBクローズ If Not con Is Nothing Then con.Close() End If End Try End Function End Class