OleDbDataAdapterのFill()メソッドを使用したサンプル

図 OleDb DataAdapterのFill()メソッドを使用したサンプル
このサンプルは、OleDbDataAdapterのFill()メソッドを使用してAccessのNwind.mdbデータベースの得意先テーブルをDataSetに格納しています。Fill()メソッドの引数には、7種類のパターンがありますがここでは、次の4種類を使用しています。
・ Fill(DataSet)
・ Fill(DataTable)
・ Fill(DataSet, srcTable)
・ Fill(DataSet, startRecord, maxRecord, srcTable)
実行結果として、Fill()メソッドの引数と戻り値を表示しています。
このサンプルでは、以下のノウハウを習得することができます。
▲ OleDbDataAdapterのFill()メソッドの使い方
サンプルのPage_Load()イベントでは、OleDbDataAdapterのFill()メソッドを使用してAccessのNwind.mdbデータベースの得意先テーブルを抽出しています。行7では、得意先テーブルからレコードを抽出するSQLを生成しています。行8-9では、OleDbConnectionのインスタンスを生成しています。引数には、Web.configに登録されている、ConnectionStringを指定しています。Web.configには、AccessのNwind.mdbデータベースに接続するための情報が登録されています。
<appSettings>
<add key="conStringAccNw" value="PROVIDER=Microsoft.Jet.OLEDB.4.0;
DATA
Source=E:\Inetpub\wwwroot\aspado\webdb\Nwind.mdb" />
</appSettings>
行10では、OleDbDataAdapterのインスタンスを生成しています。引数には、SQLとOleDbConnectionを指定しています。ここで指定したSQLのSelectステートメントは、OleDbDataAdapterのSelectCommand.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)
12
13: Dim intRo
:::
38: End Sub
行15-19では、OleDbDataAdapterのFill()メソッドの引数にDataSetを指定する例を記述しています。行16では、Fill()メソッドの引数にDataSetを指定しています。引数のsrcTableを省略すると、デフォルトのTableが割り当てられます。デフォルトで割り当てられたテーブル名を取得するには、ds.Tables(0).TableNameのように記述します。
Response.Write( ds.Tables(0).TableName ) è Table
Fill()メソッドは、OleDbDataAdapterのSelectCommandに格納されているSQLを実行してDataSetに格納します。SelectCommandには、得意先テーブルからレコードを抽出するSQLが格納されていますので、DataSetに得意先テーブルが格納されます。Fill()メソッドは、得意先テーブルからレコードを抽出するとき、OleDbConnectionのOpen()/Close()メソッドを自動的に行います。Fill()メッドでDataSetに複数のテーブルを格納するときは、明示的にOleDbConnectionのOpen()/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: intRo
17: Response.Write(String.Format( _
18: "da.Fill(ds)
==>{0}<br><br>", _
19: intRo
行21-25では、OleDbDataAdapterのFill()メソッドの引数にテーブル名を指定する例を記述しています。行22では、Fill()メソッドの引数にDataSetとsrcTableとしてCustomersを指定しています。DataSetに格納されているCustomersテーブルを参照するには、次のように記述します。
Dim dt As DataTable = ds.Tables(“Customers”)
行23-25では、Fill()メソッドの戻り値として返されたレコード件数を表示しています。
21:
Response.Write("<b>Fill()メソッドにテーブル名を指定</b><br>")
22: intRo
23: Response.Write(String.Format( _
24:
"da.Fill(ds,'Customers') ==>{0}<br><br>", _
25: intRo
行27-31では、OleDbDataAdapterのFill()メソッドの引数にレコードの範囲を指定する例を記述しています。行28では、Fill()メソッドの引数にDataSet、startRecord、maxRecords、srcTableを指定しています。startRecordには、0から始まるレコードの開始番号を指定します。maxRecordsには、取得するレコード件数を指定します。srcTableには、Customers2を指定しています。OleDbDataAdapterのSelectCommadに格納されているSelectステートメントでは、得意先テーブルからすべてのレコードを抽出するようにしていますが、startRecord、maxRecordsの指定があるため先頭から10件のレコードがDataSetに格納されます。
行29-31では、Fill()メソッドの戻り値として返されたレコード件数を表示しています。Fill()メソッドのmaxRecordsで10を指定していますので、レコード件数10が表示されます。
27:
Response.Write("<b>Fill()メソッドに抽出するレコードの範囲を指定</b><br>")
28: intRo
29: Response.Write(String.Format( _
30: "da.Fill(ds, 0,
10,'Customers2') ==>{0}<br><br>", _
31: intRo
行33-37では、OleDbDataAdapterのFill()メソッドの引数にDataTableを指定する例を記述しています。行34では、DataTableのインスタンスを生成しています。行35では、Fill()メソッドの引数にDataTableを指定しています。Fill()メソッドが実行されると得意先テーブルがDataTableに格納されます。行36-37では、DataTableに格納されている得意先テーブルのレコード件数を表示しています。レコード件数は、Ro
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.Ro