SqlDataSource.SelectCommand プロパティ

定義

基になるデータベースからデータを取得するために SqlDataSource コントロールが使用する SQL 文字列を取得または設定します。

public:
 property System::String ^ SelectCommand { System::String ^ get(); void set(System::String ^ value); };
public string SelectCommand { get; set; }
member this.SelectCommand : string with get, set
Public Property SelectCommand As String

プロパティ値

SqlDataSource でデータを取得する際に使用する SQL 文字列またはストアド プロシージャ名。

このセクションには、2 つのコード例が含まれています。 最初のコード例では、テキストを基本的な SQL クエリに設定 SelectCommand して、ODBC 準拠データベースからデータを取得し、コントロールに表示する方法を GridView 示します。 2 番目のコード例では、テキストをストアド プロシージャの名前に設定し、 プロパティを SelectCommandType 値に設定SelectCommandしてStoredProcedure、Microsoft SQL Server データベースからデータを取得し、コントロールに表示する方法をDropDownList示します。

どちらの例でも、 プロパティを介してDataSourceIDデータ ソース コントロールにアタッチされているデータ バインド コントロールはフェーズ中PreRenderにメソッドを自動的に呼び出Selectすので、メソッドをSelect明示的に呼び出す必要はありません。

次のコード例では、テキストを基本的な SQL クエリに設定 SelectCommand して、ODBC 準拠データベースからデータを取得し、コントロールに表示する方法を GridView 示します。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" >
  <head runat="server">
    <title>ASP.NET Example</title>
</head>
<body>
    <!-- This example uses a Northwind database that is hosted by an ODBC-compliant
         database. To run this sample, create an ODBC DSN to any database that hosts
         the Northwind database, including Microsoft SQL Server or Microsoft Access,
         change the name of the DSN in the ConnectionString, and view the page.
    -->

    <form id="form1" runat="server">

      <asp:SqlDataSource
          id="SqlDataSource1"
          runat="server"
          ProviderName="System.Data.Odbc"
          DataSourceMode="DataSet"
          ConnectionString="dsn=myodbc3dsn;"
          SelectCommand="SELECT FirstName, LastName, Title FROM Employees">
      </asp:SqlDataSource>

      <asp:GridView
          id="GridView1"
          runat="server"
          AllowSorting="True"
          DataSourceID="SqlDataSource1">
      </asp:GridView>

    </form>
  </body>
</html>
<%@Page  Language="VB" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" >
  <head runat="server">
    <title>ASP.NET Example</title>
</head>
<body>
    <!-- This example uses a Northwind database that is hosted by an ODBC-compliant
         database. To run this sample, create an ODBC DSN to any database that hosts
         the Northwind database, including Microsoft SQL Server or Microsoft Access,
         change the name of the DSN in the ConnectionString, and view the page.
    -->
    <form id="form1" runat="server">

      <asp:SqlDataSource
          id="SqlDataSource1"
          runat="server"
          ProviderName="System.Data.Odbc"
          DataSourceMode="DataSet"
          ConnectionString="dsn=myodbc3dsn;"
          SelectCommand="SELECT FirstName, LastName, Title FROM Employees">
      </asp:SqlDataSource>

      <asp:GridView
          id="GridView1"
          runat="server"
          AllowSorting="True"
          DataSourceID="SqlDataSource1">
      </asp:GridView>

    </form>
  </body>
</html>

次のコード例では、テキストをストアド プロシージャの名前に設定し、 プロパティを SelectCommandType 値に設定SelectCommandしてStoredProcedure、SQL Server データベースからデータを取得し、コントロールに表示する方法をDropDownList示します。 データ ソースでストアド プロシージャがサポートされている場合、プロパティには SelectCommand SQL クエリまたはストアド プロシージャの名前を指定できます。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" >
    <head runat="server">
    <title>ASP.NET Example</title>
</head>
<body>
        <form id="form1" runat="server">

            <asp:DropDownList
                id="DropDownList1"
                runat="server"
                DataTextField="LastName"
                DataSourceID="SqlDataSource1" />

            <asp:SqlDataSource
                id="SqlDataSource1"
                runat="server"
                ConnectionString="<%$ ConnectionStrings:MyNorthwind%>"
                SelectCommandType="StoredProcedure"                
                SelectCommand="sp_lastnames">
            </asp:SqlDataSource>

            <!--
                The sp_lastnames stored procedure is
                CREATE PROCEDURE sp_lastnames AS
                   SELECT LastName FROM Employees
                GO
            -->

        </form>
    </body>
</html>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" >
    <head runat="server">
    <title>ASP.NET Example</title>
</head>
<body>
        <form id="form1" runat="server">

            <asp:DropDownList
                id="DropDownList1"
                runat="server"
                DataTextField="LastName"
                DataSourceID="SqlDataSource1" />

            <asp:SqlDataSource
                id="SqlDataSource1"
                runat="server"
                ConnectionString="<%$ ConnectionStrings:MyNorthwind%>"
                SelectCommandType = "StoredProcedure"
                SelectCommand="sp_lastnames">
            </asp:SqlDataSource>

            <!--
                The sp_lastnames stored procedure is
                CREATE PROCEDURE sp_lastnames AS
                   SELECT LastName FROM Employees
                GO
            -->

        </form>
    </body>
</html>

注釈

プロパティはSelectCommand、SQL クエリまたはストアド プロシージャの名前を表し、 メソッドがSelectSQL Server データベースからデータを取得するために使用します。 Select コマンドでアスタリスク (*) を使用してすべての列を選択し、コードの自動生成を使用して更新操作または削除操作を実行する場合は、列の名前にスペースが含まれないことを確認します。

データベース製品ごとに使用する SQL が異なるため、SQL 文字列の構文は、現在使用している ADO.NET プロバイダーによって決まります。これは、ProviderName プロパティから識別できます。 SQL 文字列がパラメーター化されたクエリまたはコメントである場合は、パラメーターのプレースホルダーも現在使用している ADO.NET プロバイダーによって決まります。 たとえば、プロバイダーが クラスの System.Data.SqlClient既定のプロバイダー SqlDataSource である の場合、 パラメーターのプレースホルダーは です '@parameterName'。 ただし、プロバイダーが または System.Data.OleDbSystem.Data.Odbc設定されている場合、 パラメーターのプレースホルダーは です'?'。 パラメーター化された SQL クエリとコマンドの詳細については、「 SqlDataSource コントロールでのパラメーターの使用」を参照してください。

データ ソースでストアド プロシージャがサポートされている場合、プロパティには SelectCommand SQL 文字列またはストアド プロシージャの名前を指定できます。

プロパティは SelectCommand 、コントロールに SelectCommand 関連付けられている オブジェクトの SqlDataSourceView プロパティに SqlDataSource デリゲートします。

重要

セキュリティ上の理由から、 SelectCommand プロパティが格納されていないのはビュー ステートです。 クライアントでビュー ステートの内容をデコードできるため、データベース構造に関する機密情報をビュー ステートに格納すると、情報漏えいの脆弱性が発生する可能性があります。

重要

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

適用対象

こちらもご覧ください