次の方法で共有


SqlDataSource.Select(DataSourceSelectArguments) メソッド

定義

SelectCommand SQL 文字列と、SelectParameters コレクション内のすべてのパラメーターを使用して、基になるデータベースからデータを取得します。

public:
 System::Collections::IEnumerable ^ Select(System::Web::UI::DataSourceSelectArguments ^ arguments);
public System.Collections.IEnumerable Select(System.Web.UI.DataSourceSelectArguments arguments);
member this.Select : System.Web.UI.DataSourceSelectArguments -> System.Collections.IEnumerable
Public Function Select (arguments As DataSourceSelectArguments) As IEnumerable

パラメーター

arguments
DataSourceSelectArguments

基本的なデータ取得以外のデータに対する操作を要求するために使用される DataSourceSelectArguments オブジェクト。

戻り値

データ行の IEnumerable リスト。

例外

SqlDataSource オブジェクトは、基になるデータ ソースとの接続を確立できません。

次の例は、 Select メソッドをプログラムで呼び出し、クエリの結果に基づいて値を設定する方法を示しています。 次の例は、Web コントロールの宣言型コードを示しています。

<asp:SqlDataSource 
    ID="SqlDataSource1" 
    runat="server" 
    ConnectionString="<%$ ConnectionStrings:ConnectionString %>" 
    SelectCommand="SELECT Count(*) FROM [Products] WHERE ([ReorderLevel] > 0)">
</asp:SqlDataSource>
<asp:Label 
    ID="Label1" 
    runat="server" 
    Text="">
</asp:Label>
<br />
<asp:Button 
    ID="Button1" 
    Text="Check Reorder Status" 
    runat="server" 
    onclick="Button1_Click" />
<asp:SqlDataSource 
    ID="SqlDataSource1" 
    runat="server" 
    ConnectionString="<%$ ConnectionStrings:ConnectionString %>" 
    SelectCommand="SELECT Count(*) FROM [Products] WHERE ([ReorderLevel] > 0)">
</asp:SqlDataSource>
<asp:Label 
    ID="Label1" 
    runat="server" 
    Text="">
</asp:Label>
<br />
<asp:Button 
   ID="Button1" 
   Text="Check Reorder Status" 
   runat="server" 
   onclick="Button1_Click" />

次の例は、 Select メソッドをプログラムで呼び出す方法を示しています。 SqlDataSource コントロールは整数を返します。 整数の値は、 Label コントロールのテキストを設定し、 HyperLink コントロールを表示するかどうかを決定するために使用されます。

protected void CheckReorderStatus()
{
    DataView dv = (DataView)SqlDataSource1.Select(DataSourceSelectArguments.Empty);
    int reorderedProducts = (int)dv.Table.Rows[0][0];
    if (reorderedProducts > 0)
    {
        Label1.Text = "Number of products on reorder: " + reorderedProducts;
    }
    else
    {
        Label1.Text = "No products on reorder.";
    }
}

protected void Button1_Click(object sender, EventArgs e)
{
    CheckReorderStatus();
}
Protected Sub CheckReorderStatus()
    Dim dv As DataView
    Dim reorderedProducts As Integer

    dv = CType(SqlDataSource1.Select(DataSourceSelectArguments.Empty), DataView)
    reorderedProducts = CType(dv.Table.Rows(0)(0), Integer)
    If (reorderedProducts > 0) Then
        Label1.Text = "Number of products on reorder: " & reorderedProducts
    Else
        Label1.Text = "No products on reorder."
    End If
End Sub

Protected Sub Button1_Click(ByVal sender As Object, ByVal e As EventArgs)
    CheckReorderStatus()
End Sub

注釈

Select メソッドは、ページ ライフ サイクルのPreRenderフェーズ中に自動的に呼び出されます。 DataSourceID プロパティを介してSqlDataSource コントロールにアタッチされているデータ バインド コントロールによって呼び出されます。

DataSourceMode プロパティがDataSet値に設定されている場合、Select メソッドはDataView オブジェクトを返します。 DataSourceMode プロパティがDataReader値に設定されている場合、Select メソッドはIDataReader オブジェクトを返します。 データの読み取りが完了したら、 IDataReader オブジェクトを閉じます。

Select操作が実行される前に、OnSelecting メソッドが呼び出されて、Selecting イベントが発生します。 このイベントを処理して、パラメーターの値を調べ、 Select 操作の前に任意の処理を実行できます。

Select操作が完了すると、OnSelected メソッドが呼び出され、Selected イベントが発生します。 このイベントを処理して、戻り値とエラー コードを調べ、後処理を実行できます。

DataSourceMode プロパティが SqlDataSourceMode.DataSet に設定され、キャッシュが有効になっている場合、SqlDataSource オブジェクトはデータを取得し、Select操作中にキャッシュにデータを保存します。 キャッシュは、 CacheDuration プロパティと CacheExpirationPolicy プロパティの組み合わせで指定されたキャッシュ動作に基づいて作成、破棄、または更新されます。

Important

Microsoft Windows 認証でクライアントの偽装を使用している場合、最初のユーザーがデータにアクセスすると、データがキャッシュされます。 別のユーザーが同じデータを要求した場合、データはキャッシュから取得されます。 データは、ユーザーがデータにアクセスすることを確認するためにデータベースを別の呼び出しを行うことによって取得されません。 複数のユーザーがデータにアクセスする必要があり、データベースのセキュリティ構成によってデータの各取得を検証する場合は、キャッシュを使用しないでください。

DataSourceMode プロパティが SqlDataSourceMode.DataSet に設定され、FilterExpression プロパティが指定されている場合、フィルター式は指定されたFilterParametersプロパティで評価され、結果のフィルターはSelect操作中にデータの一覧に適用されます。

Select メソッドは、SqlDataSource コントロールに関連付けられているSqlDataSourceView オブジェクトのSelect メソッドにデリゲートします。 データ取得操作を実行するために、SqlDataSourceViewは、SelectCommand テキストと関連付けられているSelectParameters値を使用してDbCommand オブジェクトをビルドし、基になるデータベースに対してDbCommandを実行します。

Important

値は検証なしでパラメーターに挿入されます。これは潜在的なセキュリティ上の脅威です。 Filtering イベントを使用して、クエリを実行する前にパラメーター値を検証します。 詳細については、「スクリプトの 悪用の概要」を参照してください。

適用対象

こちらもご覧ください