ADO.NET Accessのホームへ戻る

データベースのテーブルからシングルレコードを抽出するサンプル

 データベースのテーブルからシングルレコードを抽出するサンプル

 

このサンプルは、AccessNwind.mdbデータベースの得意先テーブルからシングルレコードを抽出して表示します。得意先テーブルからシングルレコードを抽出するには、OleDbCommandExecuteReader()メソッドにCommandBehavior.SingleRowを指定します。CommandBehaviorにはこの他に、CloseConnectionKeyInfoSchemaOnlySingleResultなどのオプションがあります。

 

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

 

  SQLSelectステートメントにフィールド名を指定する方法

  OleDbCommandExecuteReader()メソッドのCommandBehavior.SingleRowの使い方

 

サンプルのPage_Load()イベントでは、得意先テーブルからシングルレコードを抽出して表示します。行7では、得意先テーブルから得意先名、担当者名、電話番号を抽出するSQLを生成しています。行8-10では、OleDbConnectionOleDbCommandのインスタンスを生成しています。

 

13では、OleDbConnectionOpen()メソッドでAccessNwind.mdbデータベースを開いています。行14では、OleDbCommandExecuteReader()メソッドで得意先テーブルのOleDbDataReaderを生成しています。ExecuteReader()メソッドの引数にCommandBehavior.SingleRowを指定していますので、得意先テーブルからシングルレコードが抽出されます。SQLSelectステートメントにTop 1を指定したのと同じ結果になります。

 

15-22While…End Whileでは、OleDbDataReaderRead()メソッドでEOFになるまで得意先テーブルののレコードを読み込みます。行16-21With…End Withでは、LabelTextプロパティに得意先テーブルの得意先名、担当者名、電話番号を設定しています。OleDbDataReaderからフィールド値を取得するとき、GetString()メソッドを使用して高速化しています。GetString()の引数には、フィールドのインデックス番号を指定します。行20では、レコード件数を累計しています。

 

23では、OleDbDataReaderClose()メソッドで得意先テーブルを閉じています。行24では、OleDbConnectionClose()メソッドでAccessNwind.mdbデータベースを閉じています。行25-27では、LabelTextプロパティにレコード件数を設定して表示しています。SQLSelectステートメントでは、得意先テーブルからすべてのレコードを抽出するようにしていますが、ExecuteReader()メソッドの引数にCommandBehavior.SingleRowを指定していますので1件のレコードが抽出されます。

 

  6: Sub Page_Load()
  7:   Dim strSqlSelect As String = "Select CompanyName, ContactName, Phone 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(CommandBehavior.SingleRow)
 15:   While dr.Read()
 16:     With lblMessage
 17:       .Text &= String.Format("
得意先名:<b>{0}</b><br>", dr.GetString(0))
 18:       .Text &= String.Format("
担当者名:<b>{0}</b><br>", dr.GetString(1))
 19:       .Text &= String.Format("
電話番号:<b>{0}</b><hr>", dr.GetString(2))
 20:       intRecordCount += 1
 21:     End With
 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のホームへ戻る