DataTableのレコードを検索するサンプル

DataTableのレコードを検索するサンプル

 

このサンプルは、得意先テーブルをDataTableに取り込んでレコードを検索します。レコードを検索するには、RowsコレクションのFind()メソッドを使用します。実行結果として検索したレコードを表示します。

 

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

 

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

  DataTableのレコードを検索する方法

  RowsコレクションFind()メソッドの使い方

 

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

 

15では、OleDbDataAdapterFill()メソッドで得意先テーブルをDataTableに取り込んでいます。行16では、DataTablePrimaryKeyプロパティにCustomerIDを設定して得意先IDを主キーにしています。行17では、DataTableRowsコレクションのFind()メソッドでレコードを検索しています。Find()メソッドの引数には、主キーの値を指定します。Find()メソッドの戻り値としてDataRowが返されます。レコードが見つからないときは、Nullが返されます。

 

19-21では、Find()メソッドの戻り値を調べてレコードが見つかったときは、Sub DisplayRow()DataRowを渡します。DisplayRow()では、DataRowのすべてのカラム名とカラム値を表示します。

 

  7: Sub Page_Load()
  8:   Dim strSQL As String = "Select CustomerID, CompanyName, " & _
  9:     "ContactName, Phone 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:
 15:   da.Fill(dt)
 16:   dt.PrimaryKey = New DataColumn() {dt.Columns("CustomerID")}
 17:   Dim dr As DataRow = dt.Rows.Find(1)
 18:   Response.Write("<h2>DataTable.Rows.Find()</h2>")
 19:   If Not (dr Is Nothing) Then             
 20:     DisplayRow(dr)
 21:   End If
 22: End Sub