次の方法で共有


方法 : 単一の値を返す SQL ステートメントを作成および実行する

単一の値を返す SQL ステートメントを実行するには、SQL ステートメントを実行するように設定されている TableAdapter クエリ (CustomersTableAdapter.CustomerCount() など) を実行できます。

アプリケーションで TableAdapter を使用していない場合は、コマンド オブジェクトの ExecuteScalar メソッドを呼び出し、そのメソッドの CommandType プロパティを Text に設定します ("コマンド オブジェクト" は、アプリケーションで使用している .NET Framework データ プロバイダーに固有のコマンドを表します。 たとえば、アプリケーションで .NET Framework SQL Server 用データ プロバイダーを使用している場合、コマンド オブジェクトは SqlCommand です)。

次の例では、TableAdapter またはコマンド オブジェクトのいずれかを使用してデータベースから単一の値を返す SQL ステートメントを実行する方法を示します。 TableAdapter やコマンドを使用してクエリを実行する方法の詳細については、「データセットへのデータの読み込み」を参照してください。

注意

次の手順で参照している Visual Studio ユーザー インターフェイス要素の一部は、お使いのコンピューターでは名前や場所が異なる場合があります。これらの要素は、使用している Visual Studio のエディションや独自の設定によって決まります。詳細については、「Visual Studio での開発設定のカスタマイズ」を参照してください。

TableAdapter を使用して単一の値を返す SQL ステートメントの実行

この例では TableAdapter クエリの構成ウィザードを使用して TableAdapter クエリを作成する方法を示した後、TableAdapter のインスタンスを宣言してクエリを実行する方法について説明します。

TableAdapter を使用して単一の値を返す SQL ステートメントを作成するには

  1. データセット デザイナーでデータセットを開きます。 詳細については、「方法 : データセット デザイナーでデータセットを開く」を参照してください。

  2. TableAdapter がない場合は、TableAdapter を作成します。 TableAdapter の作成方法の詳細については、「方法 : TableAdapter を作成する」を参照してください。

  3. SQL ステートメントを使用して単一の値を返すクエリが TableAdapter に既にある場合は、これ以降の手順をスキップし、「TableAdapter のインスタンスを宣言してクエリを実行するには」に進んでください。このクエリがない場合は、手順 4 から継続し、単一の値を返す新しいクエリを作成します。

  4. 目的の TableAdapter を右クリックし、ショートカット メニューを使用してクエリを追加します。

    TableAdapter クエリの構成ウィザードが開きます。

  5. [SQL ステートメントを使用する] を既定値のまま残し、[次へ] をクリックします。

  6. [単一の値を返す SELECT] オプションを選択し、[次へ] をクリックします。

  7. SQL ステートメントを入力するか、またはクエリ ビルダーを使用してステートメントを作成し、[次へ] をクリックします。

  8. クエリの名前を入力します。

  9. ウィザードが完了し、TableAdapter にクエリが追加されます。

  10. プロジェクトをビルドします。

TableAdapter のインスタンスを宣言してクエリを実行するには

  1. 実行するクエリが含まれた TableAdapter のインスタンスを宣言します。

    • デザイン時ツールを使ってインスタンスを作成するには、目的の TableAdapter をツールボックスからドラッグします。 (プロジェクト内のコンポーネントは、ツールボックス内のプロジェクト名と同じ見出しの下に表示されています)。ツールボックスに TableAdapter が表示されない場合は、プロジェクトのビルドが必要になる場合があります。

      または

    • コードでインスタンスを作成するには、次のコードを DataSet の名前と TableAdapter の名前に置き換えます。

      Dim tableAdapter As New DataSetTableAdapters.TableAdapter

      注意

      TableAdapter は、実際には関連するデータセット クラスの中に存在しません。各データセットは、対応する TableAdapter のコレクションを独自の名前空間内に保有しています。たとえば、SalesDataSet という名前のデータセットがある場合、その TableAdapter が格納された SalesDataSetTableAdapters 名前空間が存在します。

  2. コード内の他のメソッドを呼び出すのと同じようにクエリを呼び出します。 このクエリは、TableAdapter のメソッドです。 次のコードを TableAdapter とクエリの名前に置き換えます。 クエリに必要なパラメーターをすべて渡し、戻り値を処理する必要があります (変数への割り当てなど)。 クエリにパラメーターが必要かどうか不明な場合、または必要なパラメーターが不明な場合は、IntelliSense でクエリに必要なシグネチャを確認します。 クエリでパラメーターを使用するかどうかに応じて、コードは次の例のいずれかのようになります。

    TableAdapter.Query()

    TableAdapter.Query(Parameters)

  3. 通常は、クエリから返された値を変数に割り当てる必要があります。 単一の値を返す TableAdapter クエリは、(オブジェクトを返す ExecuteScalar メソッドとは異なり) そのクエリに基づいてデータ型を返します。 たとえば、TableAdapter クエリで、データ型が整数である単一の列を選択すると、このクエリの戻り値は整数になります。 列に null 値を格納できる場合、戻り値は、NULL 許容型 (Nullable(Of Integer) など) になります。 NULL 許容型の詳細については、「Nullable」を参照してください。 TableAdapter のインスタンスを宣言して、クエリを実行するコードの完成形は、次のようになります (この例では、戻り値が整数であることを前提としています。使用するクエリで返されるデータ型に合わせてコードを調整してください)。

    Dim tableAdapter As New NorthwindDataSetTableAdapters.CustomersTableAdapter()
    
    Dim returnValue As Integer
    returnValue = CType(tableAdapter.GetCustomerCount(), Integer)
    
    NorthwindDataSetTableAdapters.CustomersTableAdapter tableAdapter = 
        new NorthwindDataSetTableAdapters.CustomersTableAdapter();
    
    int returnValue = (int)tableAdapter.GetCustomerCount();
    

コマンド オブジェクトを使用して単一の値を返す SQL ステートメントの実行

次の例では、コマンドを作成し、単一の値を返す SQL ステートメントを実行する方法を示します。 コマンドにパラメーター値を設定および取得する方法については、「方法 : コマンド オブジェクトのパラメーターを設定および取得する」を参照してください。

この例では SqlCommand オブジェクトを使用します。次の要素が必要です。

  • SystemSystem.Data、および System.Xml の各名前空間への参照。

  • SqlConnection1 という名前のデータ接続。

  • SqlConnection1 の接続先となるデータ ソースの Customers という名前のテーブル (これがない場合は、データ ソース用の有効な SQL ステートメントが必要です)。

DataCommand を使用して単一の値を返す SQL ステートメントを実行するには

  • コードを実行するメソッドに次のコードを追加します。 このコマンド (たとえば、ExecuteScalar) の ExecuteScalar メソッドを呼び出すと、単一の値が返されます。 データは、Object に返されます。

    Dim sqlConnection1 As New SqlConnection("Your Connection String")
    Dim cmd As New SqlCommand
    Dim returnValue As Object
    
    cmd.CommandText = "SELECT COUNT(*) FROM Customers"
    cmd.CommandType = CommandType.Text
    cmd.Connection = sqlConnection1
    
    sqlConnection1.Open()
    
    returnValue = cmd.ExecuteScalar()
    
    sqlConnection1.Close()
    
    SqlConnection sqlConnection1 = new SqlConnection("Your Connection String");
    SqlCommand cmd = new SqlCommand();
    Object returnValue;
    
    cmd.CommandText = "SELECT COUNT(*) FROM Customers";
    cmd.CommandType = CommandType.Text;
    cmd.Connection = sqlConnection1;
    
    sqlConnection1.Open();
    
    returnValue = cmd.ExecuteScalar();
    
    sqlConnection1.Close();
    

セキュリティ

アプリケーションには、データベースにアクセスし、SQL ステートメントを実行するためのアクセス許可が必要です。

参照

処理手順

方法 : TableAdapter クエリを作成する

方法 : TableAdapter クエリを編集する

方法 : データセットにデータを読み込む

方法 : コマンド オブジェクトのパラメーターを設定および取得する

関連項目

SqlCommand.ExecuteScalar

OleDbCommand.ExecuteScalar

OdbcCommand.ExecuteScalar

OracleCommand.ExecuteScalar

概念

データセットへのデータの読み込み