【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型の変数 , テーブル名)

データテーブルのレコード数を取得

  • DataRowCollectionクラスのCountプロパティで、データテーブルのレコード数を取得します。
  • DataRowCollectionクラスは、DataTableクラスに含まれており、DataTableクラスのRowsプロパティで取得できます。
  • 書式は、以下になります。

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

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

    New SqlDataAdapter()

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

    New SqlCommand()

  • SQL文を設定

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

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

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

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

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

  • データテーブルのレコード数を取得

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

サンプルプログラム

OleDbDataAdapterクラスを使用する

2 「データテーブルのレコード数を取得」ボタンクリック時に以下処理を行う。
4~8 接続先データベースの情報を、変数に代入。
14 OleDbConnectionクラスのインスタンス化。(Usingステートメントでリソース開放を自動化)
16~21 ConnectionStringプロパティにデータベース情報を設定。
23 データベースに接続。
25 OleDbDataAdapterクラスのインスタンス化。(Usingステートメントでリソース開放を自動化)
26 OleDbCommandクラスのインスタンス化。(Usingステートメントでリソース開放を自動化)
28 SQL文を実行するために、16~21行目で設定したデータベース情報と同じ情報をConnection プロパティに設定。
30~34
レコードを抽出するSQL文をCommandTextプロパティに設定。
33行目の「?」マークは、以下36~37行目で設定するパラメータを使用する際に記述します。
36 「Product」テーブルの「ProductID」列の開始番号に、値「707」を設定する。
37 「Product」テーブルの「ProductID」列の終了番号に、値「710」を設定する。
39 SelectCommandプロパティに実行するSQL文を設定。
41 Fillメソッドを実行し、DataSet型の変数「ds」にデータを設定。
43 データセットから「dt_Product」テーブルのレコード数を取得し、Integer型の変数「dtCnt」に代入。
48 処理が正常に終了したら、データテーブルのレコード数をラベルに表示する。
52 処理の実行中にエラーが発生した場合、
54 エラー内容を取得し、ラベルに表示する。

SqlDataAdapterクラスを使用する

2 「データテーブルのレコード数を取得」ボタンクリック時に以下処理を行う。
4~7 接続先データベースの情報を、変数に代入。
13 SqlConnectionクラスのインスタンス化。(Usingステートメントでリソース開放を自動化)
15~19 ConnectionStringプロパティにデータベース情報を設定。
21 データベースに接続。
23 SqlDataAdapterクラスのインスタンス化。(Usingステートメントでリソース開放を自動化)
24 SqlCommandクラスのインスタンス化。(Usingステートメントでリソース開放を自動化)
26 SQL文を実行するために、15~19行目で設定したデータベース情報と同じ情報をConnection プロパティに設定。
28~32
レコードを抽出するSQL文をCommandTextプロパティに設定。
31行目の「@」マークは、以下34~35行目で設定するパラメータを使用する際に記述します。
34 「Product」テーブルの「ProductID」列の開始番号に、値「707」を設定する。
35 「Product」テーブルの「ProductID」列の終了番号に、値「710」を設定する。
37 SelectCommandプロパティに実行するSQL文を設定。
39 Fillメソッドを実行し、DataSet型の変数「ds」にデータを設定。
41 データセットから「dt_Product」テーブルのレコード数を取得し、Integer型の変数「dtCnt」に代入。
46 処理が正常に終了したら、データテーブルのレコード数をラベルに表示する。
50 処理の実行中にエラーが発生した場合、
52 エラー内容を取得し、ラベルに表示する。

関連記事

データベースに接続

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

Usingステートメント

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

構造化例外処理

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

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

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