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

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

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

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

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

重要

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

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

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

重要

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

適用対象

こちらもご覧ください