DataTableからレコードを抽出するサンプル

DataTableからレコードを抽出するサンプル

 

このサンプルは、得意先テーブルをDataTableに取り込んで抽出条件を指定してレコードを抽出します。レコードを抽出するには、DataTableSelect()メッドを使用します。Select()メソッドの引数には、抽出条件としてカラム名と条件を指定します。抽出条件は、SQLWhere句と同じ書式で指定します。実行結果として抽出したレコードを表示します。

 

このサンプルでは、以下のノウハウを習得することができます。

 

  得意先テーブルをDataTableに取り込む方法

  DataTableから抽出条件を指定してレコードを抽出する方法

  DataTableSelect()メソッドに抽出条件を指定する方法

  抽出条件にワイルドカード(%)を指定する方法

 

サンプルのPage_Load()イベントでは、得意先テーブルをDataTableに取り込んで抽出条件を指定してレコードを抽出します。行8-9では、得意先テーブルからレコードを抽出するSQLを生成しています。行10-13では、OleDbConnectionOleDbDataAdapterDataTableのインスタンスを生成しています。

 

17では、OleDbDataAdapterFill()メソッドで得意先テーブルをDataTableに取り込んでいます。行18では、DataTableSelect()メソッドでレコードを抽出しています。Select()メソッドの引数には、抽出条件としてKen=’愛知県’ And ContactTitile=’料理長を指定しています。この抽出条件は、愛知県内で役職が料理長の得意先を抽出することを意味します。Select()メソッドの戻り値としてDataRowのコレクションが返されます。行20-22For Each…Nextでは、arrRowsコレクションからDataRowを取り出してSub DisplayRow()に渡しています。DisplayRow()では、DataRowのすべてのカラム名とカラム値を表示します。

 

23では、DataTableSelect()メソッドでワイルドカード(%)を使用しています。抽出条件のKen=’愛知県’ And ContactTitle Like ‘%は、愛知県内で役職に「長」が付く得意先を抽出することを意味します。ワイルドカード指定を行うには、Like%を使用します。’%のようなワイルドカードを指定したときは、「店長」、「料理長」、「部長」、「課長」などが該当します。行25-27For Each…Nextでは、arrRowsからDataRowを取得してSub DisplayRow()に渡しています。

 

 

  7: Sub Page_Load()
  8:   Dim strSQL As String = "Select CustomerID, CompanyName, " & _
  9:     "ContactName, ContactTitle, Ken From Customers"
 10:   Dim con As New OleDbConnection( _
 11:     ConfigurationSettings.AppSettings("conStringNw"))
 12:   Dim da As New OleDbDataAdapter(strSQL, con)
 13:   Dim dt As New DataTable("Customers")
 14:   Dim dr As DataRow
 15:   Dim arrRows As DataRow()
 16:
 17:   da.Fill(dt)
 18:   arrRows = dt.Select("Ken = '
愛知県' And ContactTitle = '料理長'")
 19:   Response.Write("<h2>DataTable.Select(1)</h2>")
 20:   For Each dr In arrRows
 21:     DisplayRow(dr)
 22:   Next
 23:   arrRows = dt.Select("Ken = '
愛知県' And ContactTitle Like '%'")
 24:   Response.Write("<h2>DataTable.Select(2)</h2>")
 25:   For Each dr In arrRows
 26:     DisplayRow(dr)
 27:   Next
 28: End Sub