方法 : 値を返さないストアド プロシージャを実行する
更新 : 2007 年 11 月
値を返さないストアド プロシージャを実行するには、ストアド プロシージャを実行するように構成した TableAdapter クエリを実行します (たとえば、CustomersTableAdapter.UpdateTableData(CustomersDataTable))。
アプリケーションで TableAdapter を使用していない場合は、コマンド オブジェクトの ExecuteNonQuery メソッドを呼び出し、そのメソッドの CommandType プロパティを StoredProcedure に設定します ("コマンド オブジェクト" は、アプリケーションで使用している .NET Framework データ プロバイダに固有のコマンドを表します。たとえば、アプリケーションで .NET Framework SQL Server 用データ プロバイダを使用している場合、コマンド オブジェクトは SqlCommand です)。
次の例では、TableAdapter またはコマンド オブジェクトを使用して、データベースから値を返さないストアド プロシージャを実行する方法を示します。TableAdapter やコマンドを使用してクエリを実行する方法の詳細については、「データセットへの読み込みとデータのクエリの概要」を参照してください。
メモ : |
---|
使用している設定またはエディションによっては、表示されるダイアログ ボックスやメニュー コマンドがヘルプに記載されている内容と異なる場合があります。設定を変更するには、[ツール] メニューの [設定のインポートとエクスポート] をクリックします。詳細については、「Visual Studio の設定」を参照してください。 |
TableAdapter を使用した値を返さないストアド プロシージャの実行
この例では TableAdapter クエリの構成ウィザードを使用して TableAdapter クエリを作成する方法を示した後、TableAdapter のインスタンスを宣言してクエリを実行する方法について説明します。
TableAdapter を使用して値を返さないストアド プロシージャを作成するには
データセット デザイナでデータセットを開きます。詳細については、「方法 : データセット デザイナでデータセットを開く」を参照してください。
TableAdapter がない場合は、TableAdapter を作成します。TableAdapter の作成方法の詳細については、「方法 : TableAdapter を作成する」を参照してください。
ストアド プロシージャを使用する値を返さないクエリが TableAdapter に既にある場合は、これ以降の手順をスキップし、「TableAdapter のインスタンスを宣言してクエリを実行するには」に進んでください。このクエリがない場合は、手順 4 から継続し、値を返さない新しいクエリを作成します。
目的の TableAdapter を右クリックし、ショートカット メニューを使用してクエリを追加します。
TableAdapter クエリの構成ウィザードが開きます。
[既存のストアド プロシージャを使用] を選択し、[次へ] をクリックします。
ドロップダウン リストからストアド プロシージャを選択し、[次へ] をクリックします。
[値なし] を返すオプションを選択し、[次へ] をクリックします。
クエリの名前を入力します。
[次へ] または [完了] をクリックしてウィザードを完了します。クエリが TableAdapter に追加されます。
プロジェクトをビルドします。
TableAdapter のインスタンスを宣言してクエリを実行するには
実行するクエリが含まれた TableAdapter のインスタンスを宣言します。
デザイン時ツールを使ってインスタンスを作成するには、目的の TableAdapter をツールボックスからドラッグします。 (プロジェクト内のコンポーネントは、ツールボックス内のプロジェクト名と同じ見出しの下に表示されています)。ツールボックスに TableAdapter が表示されない場合は、プロジェクトのビルドが必要になる場合があります。
または
コードでインスタンスを作成するには、次のコードを DataSet の名前と TableAdapter の名前に置き換えます。
Dim tableAdapter As New DataSetTableAdapters.TableAdapter
メモ : TableAdapter は、実際には関連するデータセット クラスの中に存在しません。各データセットは、対応する TableAdapter のコレクションを独自の名前空間内に保有しています。たとえば、SalesDataSet という名前のデータセットがある場合、その TableAdapter が格納された SalesDataSetTableAdapters 名前空間が存在します。
コード内の他のメソッドを呼び出すのと同じようにクエリを呼び出します。このクエリは、TableAdapter のメソッドです。次のコードを TableAdapter とクエリの名前に置き換えます。クエリに必要なすべてのパラメータも渡す必要があります。クエリにパラメータが必要かどうか不明な場合、または必要なパラメータが不明な場合は、IntelliSense でクエリに必要なシグネチャを確認します。クエリでパラメータを使用するかどうかに応じて、コードは次の例のいずれか 1 つのようになります。
TableAdapter.Query()
TableAdapter.Query(Parameters)
TableAdapter のインスタンスを宣言してクエリを実行するコードは、次のようになります。
Dim tableAdapter As New NorthwindDataSetTableAdapters.CustomersTableAdapter() Dim rowsAffected As Integer rowsAffected = CType(tableAdapter.UpdateContactTitle("Sales Manager", "ALFKI"), Integer)
NorthwindDataSetTableAdapters.CustomersTableAdapter tableAdapter = new NorthwindDataSetTableAdapters.CustomersTableAdapter(); int rowsAffected = tableAdapter.UpdateContactTitle("Sales Manager", "ALFKI");
コマンド オブジェクトを使用した値を返さないストアド プロシージャの実行
次の例では、コマンドを作成し、値を返さないストアド プロシージャを実行する方法を示します。コマンドのパラメータ値を設定および取得する方法については、「方法 : コマンド オブジェクトのパラメータを設定および取得する」を参照してください。
この例では SqlCommand オブジェクトを使用します。次の要素が必要です。
- System、System.Data、および System.Xml の各名前空間への参照。
DataCommand を使用して値を返さないストアド プロシージャを実行するには
ストアド プロシージャを実行するメソッドに次のコードを追加します。値を返さないコマンドの ExecuteNonQuery メソッドを呼び出します (たとえば、ExecuteNonQuery)。
Dim sqlConnection1 As New SqlConnection("Your Connection String") Dim cmd As New SqlCommand Dim rowsAffected As Integer cmd.CommandText = "StoredProcedureName" cmd.CommandType = CommandType.StoredProcedure cmd.Connection = sqlConnection1 sqlConnection1.Open() rowsAffected = cmd.ExecuteNonQuery() sqlConnection1.Close()
SqlConnection sqlConnection1 = new SqlConnection("Your Connection String"); SqlCommand cmd = new SqlCommand(); Int32 rowsAffected; cmd.CommandText = "StoredProcedureName"; cmd.CommandType = CommandType.StoredProcedure; cmd.Connection = sqlConnection1; sqlConnection1.Open(); rowsAffected = cmd.ExecuteNonQuery(); sqlConnection1.Close();
セキュリティ
アプリケーションには、データベースにアクセスし、SQL ステートメントを実行するためのアクセス許可が必要です。
参照
処理手順
方法 : コマンド オブジェクトのパラメータを設定および取得する