【VB.NET】データセットのレコードを参照するには?

訪問して頂きありがとうございます。まさふくろーです。

この記事では、データセットのレコードを参照する方法をご紹介します。

データセットのレコードを参照する

  • DataSetは、データベースに似た構造で、データベースのテーブルに該当するDataTableを持ちます。
  • SQL ServerなどのデータベースとDataSetとを比較したイメージ図が以下になります。


  • データセットのレコードを参照する手順は以下になります。

データベースのデータをデータセットに設定

  • まず、OleDbDataAdapterクラスをインスタンス化します。
  • 書式は、以下になります。

New OleDb.OleDbDataAdapter()

  • 次に、OleDbCommandクラスをインスタンス化し、CommandTextプロパティで、実行するSQL文を設定します。
  • 書式は、以下になります。

New OleDbCommand()

インスタンス化したOleDbCommand.CommandText = 実行するSQL文

  • 次に、OleDbDataAdapterのSelectCommandプロパティに、インスタンス化したOleDbCommandを設定します。
  • 書式は、以下になります。

インスタンス化したOleDbDataAdapter.SelectCommand = インスタンス化したOleDbCommand

  • 次に、OleDbDataAdapterのFillメソッドで、データセットにデータを設定します。
  • 書式は、以下になります。

インスタンス化したOleDbDataAdapter.Fill(DataSet型の変数 , テーブル名)

データテーブルの行コレクションを取得

  • まず、DataSetのTablesプロパティで、データテーブルのコレクションを取得します。
  • 書式は、以下になります。

インスタンス化したDataSet.Tables(テーブル名)

  • 次に、DataTableのRowsプロパティで、データテーブルの行コレクションを取得します。
  • 書式は、以下になります。

インスタンス化したDataTable.Rows

指定した列に格納されている値を取得

  • DataRowのItemプロパティで、各列の値を取得します。
  • 書式は、以下になります。

DataRow.Item(データテーブルの列名)

  • SQL Serverに接続する場合は、SqlDataAdapterクラスでも可能です。
  • SqlDataAdapterクラスのインスタンス化

    New SqlDataAdapter()

  • SqlCommandクラスのインスタンス化

    New SqlCommand()

  • SQL文を設定

    インスタンス化したSqlCommand.CommandText = 実行するSQL文

  • SelectCommandプロパティに、インスタンス化したSqlCommandを設定

    インスタンス化したSqlDataAdapter.SelectCommand = インスタンス化したSqlCommand

  • Fillメソッドで、データセットにデータを設定

    インスタンス化したSqlDataAdapter.Fill(DataSet型の変数 , テーブル名)

  • データテーブルのコレクションを取得

    インスタンス化したDataSet.Tables(テーブル名)

  • データテーブルの行コレクションを取得

    インスタンス化したDataTable.Rows

  • 指定した列に格納されている値を取得

    DataRow.Item(データテーブルの列名)

サンプルプログラム

OleDbDataAdapterクラスを使用する

2 「データセットのレコードを参照」ボタンクリック時に以下処理を行う。
4~8 接続先データベースの情報を、変数に代入。
15 OleDbConnectionクラスのインスタンス化。(Usingステートメントでリソース開放を自動化)
17~22 ConnectionStringプロパティにデータベース情報を設定。
24 データベースに接続。
26 OleDbDataAdapterクラスのインスタンス化。(Usingステートメントでリソース開放を自動化)
27 OleDbCommandクラスのインスタンス化。(Usingステートメントでリソース開放を自動化)
29 SQL文を実行するために、17~22行目で設定したデータベース情報と同じ情報をConnection プロパティに設定。
31~35
レコードを抽出するSQL文をCommandTextプロパティに設定。
34行目の「?」マークは、以下37~38行目で設定するパラメータを使用する際に記述します。
37 「Product」テーブルの「ProductID」列の開始番号に、値「707」を設定する。
38 「Product」テーブルの「ProductID」列の終了番号に、値「710」を設定する。
40 SelectCommandプロパティに実行するSQL文を設定。
42 Fillメソッドを実行し、DataSet型の変数「ds」にデータを設定。
44 データセットから「dt_Product」テーブルのコレクションを取得し、DataTable型の変数「dt」に代入。
46 データテーブルのレコードの件数分、以下処理を繰り返す。
48 「ProductID」列の値と「Name」列の値を取得し、String型の変数「str」に値を追加していく。
55 処理が正常に終了したら、変数「str」の値をラベルに表示する。
59 処理の実行中にエラーが発生した場合、
61 エラー内容を取得し、ラベルに表示する。

SqlDataAdapterクラスを使用する

2 「データセットのレコードを参照」ボタンクリック時に以下処理を行う。
4~7 接続先データベースの情報を、変数に代入。
14 SqlConnectionクラスのインスタンス化。(Usingステートメントでリソース開放を自動化)
16~20 ConnectionStringプロパティにデータベース情報を設定。
22 データベースに接続。
24 SqlDataAdapterクラスのインスタンス化。(Usingステートメントでリソース開放を自動化)
25 SqlCommandクラスのインスタンス化。(Usingステートメントでリソース開放を自動化)
27 SQL文を実行するために、16~20行目で設定したデータベース情報と同じ情報をConnection プロパティに設定。
29~33
レコードを抽出するSQL文をCommandTextプロパティに設定。
32行目の「@」マークは、以下35~36行目で設定するパラメータを使用する際に記述します。
35 「Product」テーブルの「ProductID」列の開始番号に、値「707」を設定する。
36 「Product」テーブルの「ProductID」列の終了番号に、値「710」を設定する。
38 SelectCommandプロパティに実行するSQL文を設定。
40 Fillメソッドを実行し、DataSet型の変数「ds」にデータを設定。
42 データセットから「dt_Product」テーブルのコレクションを取得し、DataTable型の変数「dt」に代入。
44 データテーブルのレコードの件数分、以下処理を繰り返す。
46 「ProductID」列の値と「Name」列の値を取得し、String型の変数「str」に値を追加していく。
53 処理が正常に終了したら、変数「str」の値をラベルに表示する。
57 処理の実行中にエラーが発生した場合、
59 エラー内容を取得し、ラベルに表示する。

関連記事

データベースに接続

【VB.NET】データベースに接続するには?

Usingステートメント

【VB.NET】UsingステートメントでDisposeメソッドの呼び出しを自動化する

構造化例外処理

【VB.NET】構造化例外処理とは?

最後まで読んでいただき、ありがとうございました!

本のまとめ関連記事はこちら