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

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

 

このサンプルは、OleDbDataAdapterに格納されているパラメータクエリに値を設定して得意先テーブルからレコードを抽出して表示します。パラメータクエリに値を設定するには、SelectedCommandParameters.Add()メソッドでパラメータ変数を追加して、GetFillParametersコレクションのValueプロパティに設定します。

 

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

 

  OleDbDataAdapterに格納されているパラメータクエリに値を設定する方法

  DataSetに得意先テーブルを格納する方法

  DataTableからカラム名とカラム値を取得する方法

 

サンプルのPage_Load()イベントでは、OleDbDataAdapterSelectedCommandに格納されているパラメータクエリに値を設定して得意先テーブルからレコードを抽出して表示します。行7-8では、得意先テーブルから得意先IDを指定してレコードを抽出するSQLを生成しています。SelectステートメントのWhere句では、CustomerIDにパラメータ?を指定しています。行9-12では、OleDbConnectionOleDbDataAdapterDataSetのインスタンスを生成しています。

 

14-15では、OleDbDataAdapterSelectedCommandに格納されている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では、OleDbDataAdapterFill()メソッドで得意先テーブルから得意先ID=1のレコードを抽出してDataSetに格納しています。行17-22With…End Withでは、DataSetTablesコレクションから得意先テーブルのDataTableを生成して処理しています。

 

18-19では、ResponseWrite()メソッドで得意先テーブルの先頭レコードの1番目のカラム名とカラム値を表示しています。Columns(0).ColumnNameは、DataTableの1番目のカラム(得意先ID)の名前を取得します。Rows(0)(0)は、DataTableの先頭レコードの1番目のカラム値(得意先ID)を取得します。

 

20-21では、ResponseWrite()メソッドで得意先テーブルの先頭レコードの2番目のカラム名とカラム値を表示しています。Columns(1).ColumnNameは、DataTableの2番目のカラム(得意先名)の名前を取得します。Rows(0)(1)は、DataTableの先頭レコードの2番目のカラム値(得意先名)を取得します。

 

 

  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, .Rows(0)(0)) )
 20:     Response.Write(String.Format("<b>{0}</b>: {1}<br>", _
 21:       .Columns(1).ColumnName, .Rows(0)(1)) )
 22:   End With
 23: End Sub