方法 : コマンド オブジェクトのパラメーターを設定および取得する
コマンド オブジェクトを使用してデータベースに対してコマンドを実行するときには、実行する SQL ステートメントまたはストアド プロシージャにパラメーターが必要になる場合があります。 たとえば、パラメーターを必要とする単純な UPDATE ステートメントは次のようになります。
UPDATE Employees
SET LastName = @LastName, FirstName = @FirstName, BirthDate = @BirthDate
WHERE (EmployeeID = @EmployeeID)
このステートメントを実行する場合は、すべてのパラメーター (@LastName、@FirstName、@BirthDate、および @EmployeeID) に値を設定する必要があります。 そのためには、パラメーター オブジェクトを使用します。 コマンド オブジェクトは、一連の型のオブジェクト SqlParameter、OleDbParameter、OdbcParameter、または OracleParameter が含まれたパラメーターのコレクション (たとえば、Parameters) をサポートします。 コレクション内には、渡す必要のある各パラメーターについて 1 つのパラメーター オブジェクトがあります。 また、ストアド プロシージャを呼び出す場合は、プロシージャの戻り値を取得するために追加のパラメーターが必要な場合もあります。
注意
データセットを使用する場合は、一般にコマンドを直接実行することはありません。代わりに、TableAdapter クエリにパラメーターを渡します。詳細については、「方法 : データセットにデータを読み込む」を参照してください。
パラメーター値の設定
コマンドを実行する前に、コマンドのすべてのパラメーターに対して値を設定する必要があります。
パラメーター値を設定するには
コマンドのパラメーター コレクションの各パラメーターに対して、Value プロパティを設定します。
ストアド プロシージャを参照するコマンドを実行する前にパラメーターを設定する方法の例を次に示します。 このサンプルでは、au_id、au_lname、au_fname という 3 つのパラメーターを含むパラメーター コレクションが既に設定されていると仮定しています。 どのパラメーターを設定するかを明確にするために、各パラメーターは名前で設定されています。
With oleDbCommand1 .CommandText = "UpdateAuthor" .CommandType = System.Data.CommandType.StoredProcedure .Parameters("au_id").Value = "172-32-1176" .Parameters("au_lname").Value = "White" .Parameters("au_fname").Value = "Johnson" End With OleDbConnection1.Open() oleDbCommand1.ExecuteNonQuery() OleDbConnection1.Close()
oleDbCommand1.CommandText = "UpdateAuthor"; oleDbCommand1.CommandType = System.Data.CommandType.StoredProcedure; oleDbCommand1.Parameters["au_id"].Value = "172-32-1176"; oleDbCommand1.Parameters["au_lname"].Value = "White"; oleDbCommand1.Parameters["au_fname"].Value = "Johnson"; oleDbConnection1.Open(); oleDbCommand1.ExecuteNonQuery(); oleDbConnection1.Close();
戻り値の取得
ストアド プロシージャは、多くの場合呼び出し元のアプリケーションに値を返します。
プロシージャによって返される値を取得するには
Direction プロパティが Output または InputOutput (プロシージャ内で同じパラメーターを値の受け渡しの両方に使用する場合) に設定されたパラメーターを作成します。 パラメーターのデータ型が予想される戻り値のデータ型と一致するようにします。
プロシージャを実行した後、返されたパラメーターの Value プロパティを読み取ります。
プロシージャの戻り値を取得するには
Direction プロパティが ReturnValue に設定されたパラメーターを作成します。
注意
戻り値のパラメーター オブジェクトは、パラメーター コレクションの最初の項目である必要があります。
パラメーターのデータ型が予想される戻り値のデータ型と一致するようにします。
注意
UPDATE、INSERT、DELETE の各 SQL ステートメントは、ステートメントによって影響を受けたレコードの数を示す整数値を返します。この値は、ExecuteNonQuery メソッドの戻り値として取得できます。詳細については、「ストアド プロシージャでのデータの変更」を参照してください。
CountAuthors という名前のストアド プロシージャの戻り値を取得する方法の例を次に示します。 この例では、コマンドのパラメーター コレクションの最初のパラメーターが "retvalue" という名前で、方向が ReturnValue に設定されていると仮定しています。
Dim returnValue As Integer
oleDbCommand1.CommandText = "CountAuthors"
oleDbCommand1.CommandType = CommandType.StoredProcedure
oleDbConnection1.Open()
oleDbCommand1.ExecuteNonQuery()
oleDbConnection1.Close()
returnValue = CType(oleDbCommand1.Parameters("retvalue").Value, Integer)
MessageBox.Show("Return Value = " & returnValue.ToString())
int returnValue;
oleDbCommand1.CommandText = "CountAuthors";
oleDbCommand1.CommandType = CommandType.StoredProcedure;
oleDbConnection1.Open();
oleDbCommand1.ExecuteNonQuery();
oleDbConnection1.Close();
returnValue = (int)(oleDbCommand1.Parameters["retvalue"].Value);
MessageBox.Show("Return Value = " + returnValue.ToString());
参照
処理手順
方法 : 行を返す SQL ステートメントを作成および実行する
方法 : 単一の値を返す SQL ステートメントを作成および実行する
方法 : 値を返さない SQL ステートメントを作成および実行する