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

図 OleDb DataAdapterのGetFillParameters()メソッドを使用したサンプル
このサンプルは、OleDbDataAdapterに格納されているパラメータクエリに値を設定して得意先テーブルからレコードを抽出して表示します。パラメータクエリに値を設定するには、SelectedCommandのParameters.Add()メソッドでパラメータ変数を追加して、GetFillParametersコレクションのValueプロパティに設定します。
このサンプルは、以下のノウハウを習得することができます。
▲ OleDbDataAdapterに格納されているパラメータクエリに値を設定する方法
▲ DataSetに得意先テーブルを格納する方法
▲ DataTableからカラム名とカラム値を取得する方法
サンプルのPage_Load()イベントでは、OleDbDataAdapterのSelectedCommandに格納されているパラメータクエリに値を設定して得意先テーブルからレコードを抽出して表示します。行7-8では、得意先テーブルから得意先IDを指定してレコードを抽出するSQLを生成しています。SelectステートメントのWhere句では、CustomerIDにパラメータ?を指定しています。行9-12では、OleDbConnection、OleDbDataAdapter、DataSetのインスタンスを生成しています。
行14-15では、OleDbDataAdapterのSelectedCommandに格納されているSelectステートメントにパラメータ変数@CustomerIDを追加して得意先IDを設定しています。パラメータ変数を追加するには、ParametersコレクションのAdd()メソッドを使用します。Add()メソッドの引数には、パラメータ変数、データ型を指定しています。パラメータ変数の値は、GetFillParametersコレクションのValueプロパティに設定します。行14-15を結合させて、次のように記述することもできます。
da.SelectCommand.Parameters.Add("@CustomerID", OleDbType.Integer).Value = 1
複数のパラメータ値を設定するときは、次のように記述します。
da.SelectCommand.Parameters.Add("@Param1", OleDbType.VarWChar,10)
da.GetFillParameters(0).Value = "Value1"
da.SelectCommand.Parameters.Add("@Param2", OleDbType.VarWChar,10)
da.GetFillParameters(1).Value = "Value2"
行16では、OleDbDataAdapterのFill()メソッドで得意先テーブルから得意先ID=1のレコードを抽出してDataSetに格納しています。行17-22のWith…End Withでは、DataSetのTablesコレクションから得意先テーブルのDataTableを生成して処理しています。
行18-19では、ResponseのWrite()メソッドで得意先テーブルの先頭レコードの1番目のカラム名とカラム値を表示しています。Columns(0).ColumnNameは、DataTableの1番目のカラム(得意先ID)の名前を取得します。Ro
行20-21では、ResponseのWrite()メソッドで得意先テーブルの先頭レコードの2番目のカラム名とカラム値を表示しています。Columns(1).ColumnNameは、DataTableの2番目のカラム(得意先名)の名前を取得します。Ro
6: Sub Page_Load()
7: Dim strSQL As String = "Select
CustomerID, CompanyName From Customers " & _
8: "Where CustomerID = ?"
9: Dim con As New OleDbConnection( _
10:
ConfigurationSettings.AppSettings("conStringAccNw"))
11: Dim da As New
OleDbDataAdapter(strSQL, con)
12: Dim ds As New DataSet()
13:
14:
da.SelectCommand.Parameters.Add("@CustomerID", OleDbType.Integer)
15: da.GetFillParameters(0).Value = 1
16: da.Fill(ds, "Customers")
17: With ds.Tables(0)
18:
Response.Write(String.Format("<b>{0}</b>: {1}<br>", _
19:
.Columns(0).ColumnName, .Ro
20:
Response.Write(String.Format("<b>{0}</b>: {1}<br>", _
21:
.Columns(1).ColumnName, .Ro
22: End With
23: End Sub