Accessデータベースの一つのテーブルの内容を取得して、DataTableとして格納する事により、プログラム内で使いやすくなる。
下記の例では、一つのテーブルから全データを取得し、そのままDataTableに格納している。そのためのメソッドとしては、DataAdapterを使い、そのアダプターにFillする事で実現できる。その結果をForm2のDataGridViewのデータソースとして設定することにより、内容を一覧表示できる。(table_nameに、取得したいテーブル名称を代入してこのプロシジャーを呼ぶ)
一旦、DataTableに格納してしまえば、Rowsメソッドを使って各レコードへアクセスしたり、各レコードの各フィールドへアクセスすることが非常に簡単に実現できる。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
Sub DBread(ByVal table_name As String) 'SQL文 Dim SQL_txt As String = "SELECT * FROM " & table_name 'データアダプターを生成 Dim adapter As New OleDb.OleDbDataAdapter(SQL_txt, DB_connection_text) 'データの読み込み Dim Table1 As New DataTable() adapter.Fill(Table1) 'データソースを設定してDataGridViewにデータを表示 Dim BindingSource1 As New BindingSource BindingSource1.DataSource = Table1 Form2.DataGridView1.DataSource = BindingSource1 'Fomr2を表示 Form2.Text = table_name 'タイトルをテーブル名に Form2.Show() End Sub |
このアダプターを使ったデータベースへのアクセスでは、データベースのOPENを特に明示する必要は無い。
一つのDatabase全体に相当するもの(複数のテーブルの集合)は、DataSetであり、DataTableとは、Database内の一つのテーブルに相当する物であると考えれば分かりやすい。
DataTableから各レコードや各要素へアクセスするには、
1 2 3 4 |
テーブル内、i番目のレコードの "RxDateTime"というフィールドのデータ: → Table1.Rows(i)("RxDateTime") ただし、順番はSelect文により指定されたOrderによる。 |