ADO.NET Accessのホームへ戻る

OleDbDataReaderからフィールド名を指定して値を取得するサンプル

 OleDb DataReaderからフィールド名を指定して値を取得するサンプル

 

このサンプルは、AccessNwind.mdbデータベースの得意先テーブルからレコードを抽出して表示します。OleDbDataReaderからはフィールド名を指定して値を取得します。

 

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

 

  SQLSelect Topオプションの使い方

  OleDbDataReaderRead()メソッドの使い方

  OleDbDataReaderからフィールド名を指定して値を取得する方法

 

サンプルのPage_Load()イベントでは、得意先テーブルからレコードを抽出して表示しています。行7では、得意先テーブルから5件のレコードを抽出するSQLを生成しています。SelectステートメントのTop 5は、先頭から5件のレコードを抽出することを意味します。このオプションは、得意先の売上高を降順に並べ替えて利用すると便利です。たとえば、売上高ベスト10を表示するには、次のようなSQLを使用します。

 

Select Top 10 * From Sales Order By SalesAmount Desc

 

ダイレクトメールのラベルを印刷するときは、Top n Percentオプションを使用すると便利です。たとえば、売上高上位10パーセントの得意先にダイレクトメールを送信するときは、次のようなSQLを使用します。

 

Select Top 10 Percent * From Sales Order By SalesAmount Desc

 

8-10では、OleDbConnectionOleDbCommandのインスタンスを生成しています。行13では、OleDbConnectionOpen()メソッドでAccessNwind.mdbデータベースを開いています。行14では、OleDbCommandExecuteReader()メソッドでSQLSelectステートメントを実行しています。ExecuteReader()メソッドは、得意先テーブルのOleDbDataReaderを生成して返します。行15-22While…End Whileでは、OleDbDataReaderRead()メソッドでEOFになるまでレコードを読み込みます。行16-20With…End Withでは、LabelTextプロパティに得意先テーブルの得意先名、担当者名、電話番号を設定しています。OleDbDataReaderからフィールドの値を取得するには、引数にフィールド名を指定します。たとえば、得意先名を取得するには次のように記述します。

 

myDataReader.Item(“CompanyName”)

myDataReader(“CompanyName”)

 

OleDbDataReaderItemプロパティは、省略することができます。

 

23では、OleDbDataReaderClose()メソッドで得意先テーブルを閉じています。行24では、OleDbConnectionClose()メソッドでAccessNwind.mdbデータベースを閉じています。

 

  6: Sub Page_Load()
  7:   Dim strSqlSelect As String = "Select top 5 * From Customers;"
  8:   Dim con As New OleDbConnection( _
  9:     ConfigurationSettings.AppSettings("conStringAccNw"))
 10:   Dim cmd As New OleDbCommand(strSqlSelect, con)
 11:   Dim intRecordCount As Integer
 12:
 13:   con.Open()
 14:   Dim dr As OleDbDataReader = cmd.ExecuteReader()
 15:   While dr.Read()
 16:     With lblMessage
 17:       .Text &= String.Format("
得意先名:<b>{0}</b><br>", dr("CompanyName"))
 18:       .Text &= String.Format("
担当者名:<b>{0}</b><br>", dr("ContactName"))
 19:       .Text &= String.Format("
電話番号:<b>{0}</b><hr>", dr("Phone"))
 20:     End With
 21:     intRecordCount += 1
 22:   End While
 23:   dr.Close()
 24:   con.Close()
 25:   lblMessage.Text &= _
 26:     String.Format("<b>{0}</b>
件の得意先を抽出しました.", _
 27:     intRecordCount.ToString())
 28: End Sub

 

ADO.NET Accessのホームへ戻る