OleDbDataAdapterFill()メソッドを使用したサンプル

OleDb DataAdapterFill()メソッドを使用したサンプル

 

このサンプルは、OleDbDataAdapterFill()メソッドを使用してAccessNwind.mdbデータベースの得意先テーブルをDataSetに格納しています。Fill()メソッドの引数には、7種類のパターンがありますがここでは、次の4種類を使用しています。

 

  Fill(DataSet)

  Fill(DataTable)

  Fill(DataSet, srcTable)

  Fill(DataSet, startRecord, maxRecord, srcTable)

 

実行結果として、Fill()メソッドの引数と戻り値を表示しています。

 

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

 

  OleDbDataAdapterFill()メソッドの使い方

 

サンプルのPage_Load()イベントでは、OleDbDataAdapterFill()メソッドを使用してAccessNwind.mdbデータベースの得意先テーブルを抽出しています。行7では、得意先テーブルからレコードを抽出するSQLを生成しています。行8-9では、OleDbConnectionのインスタンスを生成しています。引数には、Web.configに登録されている、ConnectionStringを指定しています。Web.configには、AccessNwind.mdbデータベースに接続するための情報が登録されています。

 

<appSettings>

  <add key="conStringAccNw" value="PROVIDER=Microsoft.Jet.OLEDB.4.0;

DATA Source=E:\Inetpub\wwwroot\aspado\webdb\Nwind.mdb" />

</appSettings>

 

10では、OleDbDataAdapterのインスタンスを生成しています。引数には、SQLOleDbConnectionを指定しています。ここで指定したSQLSelectステートメントは、OleDbDataAdapterSelectCommand.CommandTextプロパティに格納されます。ランタイム時にSQLを格納するには、次のように記述します。

 

da.SelectCommand.CommandText = strSQL

 

12では、DataSetのインスタンスを生成しています。

 

  6: Sub Page_Load()
  7:   Dim strSQL As String = "Select * From Customers"
  8:   Dim con As New OleDbConnection( _
  9:     ConfigurationSettings.AppSettings("conStringAccNw"))
 10:   Dim da As New OleDbDataAdapter(strSQL, con)
 11:
 12
:   Dim ds As New DataSet()

 13:   Dim intRowsRetrieved As Integer

:::
 38: End Sub

 

15-19では、OleDbDataAdapterFill()メソッドの引数にDataSetを指定する例を記述しています。行16では、Fill()メソッドの引数にDataSetを指定しています。引数のsrcTableを省略すると、デフォルトのTableが割り当てられます。デフォルトで割り当てられたテーブル名を取得するには、ds.Tables(0).TableNameのように記述します。

 

Response.Write( ds.Tables(0).TableName ) è Table

 

Fill()メソッドは、OleDbDataAdapterSelectCommandに格納されているSQLを実行してDataSetに格納します。SelectCommandには、得意先テーブルからレコードを抽出するSQLが格納されていますので、DataSetに得意先テーブルが格納されます。Fill()メソッドは、得意先テーブルからレコードを抽出するとき、OleDbConnectionOpen()/Close()メソッドを自動的に行います。Fill()メッドでDataSetに複数のテーブルを格納するときは、明示的にOleDbConnectionOpen()/Close()メソッドを実行することによりFill()メソッドのオーバーヘッドを軽減することができます。

 

con.Open()

da.SelectCommand.CommandText = "Select * From Customers"

da.Fill(ds,"Customers")

da.SelectCommand.CommandText = "Select * From Suppliers"

da.Fill(ds,"Suppliers")

con.Close()

 

17-19では、Fill()メソッドの戻り値として返されたレコード件数を表示しています。

 

15:   Response.Write("<b>Fill()メソッドにDataSetを指定</b><br>")
 16:   intRowsRetrieved = da.Fill(ds)
 17:   Response.Write(String.Format( _
 18:     "da.Fill(ds) ==>{0}<br><br>", _
 19:     intRowsRetrieved.ToString))

21-25では、OleDbDataAdapterFill()メソッドの引数にテーブル名を指定する例を記述しています。行22では、Fill()メソッドの引数にDataSetsrcTableとしてCustomersを指定しています。DataSetに格納されているCustomersテーブルを参照するには、次のように記述します。

 

Dim dt As DataTable = ds.Tables(“Customers”)

 

23-25では、Fill()メソッドの戻り値として返されたレコード件数を表示しています。

 

21:   Response.Write("<b>Fill()メソッドにテーブル名を指定</b><br>")
 22:   intRowsRetrieved = da.Fill(ds,"Customers")
 23:   Response.Write(String.Format( _
 24:     "da.Fill(ds,'Customers') ==>{0}<br><br>", _
 25:     intRowsRetrieved.ToString))

27-31では、OleDbDataAdapterFill()メソッドの引数にレコードの範囲を指定する例を記述しています。行28では、Fill()メソッドの引数にDataSetstartRecordmaxRecordssrcTableを指定しています。startRecordには、0から始まるレコードの開始番号を指定します。maxRecordsには、取得するレコード件数を指定します。srcTableには、Customers2を指定しています。OleDbDataAdapterSelectCommadに格納されているSelectステートメントでは、得意先テーブルからすべてのレコードを抽出するようにしていますが、startRecordmaxRecordsの指定があるため先頭から10件のレコードがDataSetに格納されます。

 

29-31では、Fill()メソッドの戻り値として返されたレコード件数を表示しています。Fill()メソッドのmaxRecords10を指定していますので、レコード件数10が表示されます。


 27:   Response.Write("<b>Fill()
メソッドに抽出するレコードの範囲を指定</b><br>")
 28:   intRowsRetrieved = da.Fill(ds, 0, 10,"Customers2")
 29:   Response.Write(String.Format( _
 30:     "da.Fill(ds, 0, 10,'Customers2') ==>{0}<br><br>", _
 31:     intRowsRetrieved.ToString))

33-37では、OleDbDataAdapterFill()メソッドの引数にDataTableを指定する例を記述しています。行34では、DataTableのインスタンスを生成しています。行35では、Fill()メソッドの引数にDataTableを指定しています。Fill()メソッドが実行されると得意先テーブルがDataTableに格納されます。行36-37では、DataTableに格納されている得意先テーブルのレコード件数を表示しています。レコード件数は、RowsコレクションのCountプロパティを参照します。


 33:   Response.Write("<b>Fill()
メソッドにDataTableを指定</b><br>")
 34:   Dim dt As New DataTable("Customers")
 35:   da.Fill(dt)
 36:   Response.Write(String.Format( _
 37:     "da.Fill(dt) ==>{0}<br>", dt.Rows.Count.ToString))