SqlDataSource.SelectCommand プロパティ

定義

基になるデータベースからデータを取得するために SqlDataSource コントロールが使用する SQL 文字列を取得または設定します。Gets or sets the SQL string that the SqlDataSource control uses to retrieve data from the underlying database.

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

プロパティ値

String

SqlDataSource でデータを取得する際に使用する SQL 文字列またはストアド プロシージャ名。An SQL string or the name of a stored procedure that the SqlDataSource uses to retrieve data.

このセクションには、2 つのコード例が含まれています。This section contains two code examples. 最初のコード例では、テキストを SelectCommand 基本的な SQL クエリに設定して ODBC 準拠のデータベースからデータを取得し、コントロールに表示する方法を示し GridView ます。The first code example demonstrates how to set the SelectCommand text to a basic SQL query to retrieve data from an ODBC-compliant database and display it in a GridView control. 2番目のコード例では、 SelectCommand テキストをストアドプロシージャの名前に設定し、プロパティを値に設定して、 SelectCommandType StoredProcedure Microsoft SQL Server データベースからデータを取得し、コントロールに表示する方法を示し DropDownList ます。The second code example demonstrates how to set the SelectCommand text to the name of a stored procedure and the SelectCommandType property to the StoredProcedure value to retrieve data from a Microsoft SQL Server database and display it in a DropDownList control.

どちらの例でも、メソッドを明示的に呼び出す必要はありません Select 。これは、プロパティを介してデータソースコントロールにアタッチされているデータバインドコントロールが、 DataSourceID フェーズ中に自動的にメソッドを呼び出すためです Select PreRenderIn both examples, there is no need to explicitly call the Select method because the data-bound controls that are attached to the data source control through the DataSourceID property will automatically call the Select method during the PreRender phase.

次のコード例では、テキストを SelectCommand 基本的な SQL クエリに設定して ODBC 準拠のデータベースからデータを取得し、コントロールに表示する方法を示し GridView ます。The following code example demonstrates how to set the SelectCommand text to a basic SQL query to retrieve data from an ODBC-compliant database and display it in a GridView control.

<!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>

次のコード例では、テキストを SelectCommand ストアドプロシージャの名前に設定し、プロパティを値に設定して、 SelectCommandType StoredProcedure SQL Server データベースからデータを取得し、コントロールに表示する方法を示し DropDownList ます。The following code example demonstrates how to set the SelectCommand text to the name of a stored procedure and the SelectCommandType property to the StoredProcedure value to retrieve data from a SQL Server database and display it in a DropDownList control. SelectCommandデータソースがストアドプロシージャをサポートしている場合は、プロパティに SQL クエリまたはストアドプロシージャの名前を指定できます。The SelectCommand property can be an SQL query or the name of a stored procedure, if the data source supports stored procedures.

<!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 クエリまたはストアドプロシージャの名前を表します。このプロパティは、 Select SQL Server データベースからデータを取得するためにメソッドによって使用されます。The SelectCommand property represents an SQL query or the name of a stored procedure, and is used by the Select method to retrieve data from a SQL Server database. Select コマンドでアスタリスク (*) を使用してすべての列を選択し、自動コード生成を使用して更新操作または削除操作を実行する場合は、列名にスペースが含まれていないことを確認してください。If you use an asterisk (*) in the Select command to select all columns, and if you use automatic code generation to perform update or delete operations, make sure that no columns have spaces in their names.

データベース製品ごとに使用する SQL が異なるため、SQL 文字列の構文は、現在使用している ADO.NET プロバイダーによって決まります。これは、ProviderName プロパティから識別できます。Because different database products use different varieties of SQL, the syntax of the SQL string depends on the current ADO.NET provider being used, which is identified by the ProviderName property. SQL 文字列がパラメーター化されたクエリまたはコメントである場合は、パラメーターのプレースホルダーも現在使用している ADO.NET プロバイダーによって決まります。If the SQL string is a parameterized query or command, the placeholder of the parameter also depends on the ADO.NET provider being used. たとえば、プロバイダーが (クラスの既定のプロバイダー) である場合、 System.Data.SqlClient SqlDataSource パラメーターのプレースホルダーはに '@parameterName' なります。For example, if the provider is the System.Data.SqlClient, which is the default provider for the SqlDataSource class, the placeholder of the parameter is '@parameterName'. ただし、プロバイダーがまたはに設定されている場合、 System.Data.Odbc System.Data.OleDb パラメーターのプレースホルダーはに '?' なります。However, if the provider is set to the System.Data.Odbc or System.Data.OleDb, the placeholder of the parameter is '?'. パラメーター化された SQL クエリとコマンドの詳細については、「 SqlDataSource コントロールでのパラメーターの使用」を参照してください。For more information about parameterized SQL queries and commands, see Using Parameters with the SqlDataSource Control.

SelectCommandデータソースがストアドプロシージャをサポートしている場合は、プロパティに SQL 文字列またはストアドプロシージャの名前を指定できます。The SelectCommand property can be an SQL string or the name of a stored procedure, if the data source supports stored procedures.

プロパティは、 SelectCommand SelectCommand SqlDataSourceView コントロールに関連付けられているオブジェクトのプロパティにデリゲートし SqlDataSource ます。The SelectCommand property delegates to the SelectCommand property of the SqlDataSourceView object that is associated with the SqlDataSource control.

重要

セキュリティ上の理由から、プロパティは "ビューステート" として格納されて SelectCommand いません。For security purposes, the SelectCommand property is not stored is view state. クライアントでビューステートの内容をデコードできるため、データベース構造に関する機密情報をビューステートに格納すると、情報漏えいの脆弱性が生じる可能性があります。Because it is possible to decode the contents of view state on the client, storing sensitive information about the database structure in view state could result in an information disclosure vulnerability.

重要

値は、検証なしでパラメーターに挿入されます。これは、セキュリティ上の脅威となる可能性があります。Values are inserted into parameters without validation, which is a potential security threat. クエリを Filtering 実行する前に、イベントを使用してパラメーター値を検証してください。Use the Filtering event to validate parameter values before executing the query. 詳細については、「スクリプトによる攻略の概要」を参照してください。For more information, see Script Exploits Overview.

適用対象

こちらもご覧ください