SqlCommand.Prepare メソッド

定義

SQL Server のインスタンスに対する準備済みのコマンドを作成します。Creates a prepared version of the command on an instance of SQL Server.

public:
 virtual void Prepare();
public void Prepare ();
abstract member Prepare : unit -> unit
override this.Prepare : unit -> unit
Public Sub Prepare ()

実装

Prepare メソッドの使用例を次に示します。The following example demonstrates the use of the Prepare method.

private static void SqlCommandPrepareEx(string connectionString)
{
    using (SqlConnection connection = new SqlConnection(connectionString))
    {
        connection.Open();
        SqlCommand command = new SqlCommand(null, connection);

        // Create and prepare an SQL statement.
        command.CommandText =
            "INSERT INTO Region (RegionID, RegionDescription) " +
            "VALUES (@id, @desc)";
        SqlParameter idParam = new SqlParameter("@id", SqlDbType.Int, 0);
        SqlParameter descParam = 
            new SqlParameter("@desc", SqlDbType.Text, 100);
        idParam.Value = 20;
        descParam.Value = "First Region";
        command.Parameters.Add(idParam);
        command.Parameters.Add(descParam);

        // Call Prepare after setting the Commandtext and Parameters.
        command.Prepare();
        command.ExecuteNonQuery();

        // Change parameter values and call ExecuteNonQuery.
        command.Parameters[0].Value = 21;
        command.Parameters[1].Value = "Second Region";
        command.ExecuteNonQuery();
    }
}
Private Sub SqlCommandPrepareEx(ByVal connectionString As String)
    Using connection As New SqlConnection(connectionString)
        connection.Open()
        Dim command As New SqlCommand("", connection)

        ' Create and prepare an SQL statement.
        command.CommandText = _
           "INSERT INTO Region (RegionID, RegionDescription) " & _
           "VALUES (@id, @desc)"
        Dim idParam As SqlParameter = _
            New SqlParameter("@id", SqlDbType.Int, 0)
        Dim descParam As SqlParameter = _
            New SqlParameter("@desc", SqlDbType.Text, 100)
        idParam.Value = 20
        descParam.Value = "First Region"
        command.Parameters.Add(idParam)
        command.Parameters.Add(descParam)

        ' Call Prepare after setting the Commandtext and Parameters.
        command.Prepare()
        command.ExecuteNonQuery()

        ' Change parameter values and call ExecuteNonQuery.
        command.Parameters(0).Value = 21
        command.Parameters(1).Value = "Second Region"
        command.ExecuteNonQuery()
    End Using
End Sub

注釈

CommandTypeStoredProcedureに設定されている場合、Prepare への呼び出しは成功しますが、no op が発生する可能性があります。If CommandType is set to StoredProcedure, the call to Prepare should succeed, although it may cause a no-op.

Prepareを呼び出す前に、準備するステートメントの各パラメーターのデータ型を指定します。Before you call Prepare, specify the data type of each parameter in the statement to be prepared. 可変長データ型のパラメーターごとに、Size プロパティを必要な最大サイズに設定する必要があります。For each parameter that has a variable length data type, you must set the Size property to the maximum size needed. これらの条件が満たされない場合、Prepare はエラーを返します。Prepare returns an error if these conditions are not met.

注意

Transact-sql USE <database> ステートメントを実行するか、ChangeDatabase メソッドを呼び出してデータベースコンテキストを変更する場合は、Prepare をもう一度呼び出す必要があります。If the database context is changed by executing the Transact-SQL USE <database> statement, or by calling the ChangeDatabase method, then Prepare must be called a second time.

Prepareを呼び出した後に Execute メソッドを呼び出すと、Size プロパティによって指定された値よりも大きいパラメーター値は、パラメーターの元の指定したサイズに自動的に切り捨てられ、切り捨てエラーは返されません。If you call an Execute method after calling Prepare, any parameter value that is larger than the value specified by the Size property is automatically truncated to the original specified size of the parameter, and no truncation errors are returned.

出力パラメーター (準備されているかどうかにかかわらず) は、ユーザーが指定したデータ型である必要があります。Output parameters (whether prepared or not) must have a user-specified data type. 可変長データ型を指定する場合は、最大 Sizeも指定する必要があります。If you specify a variable length data type, you must also specify the maximum Size.

Visual Studio 2010 より前では、Prepare は例外をスローしました。Prior to Visual Studio 2010, Prepare threw an exception. Visual Studio 2010 以降では、このメソッドは例外をスローしません。Beginning in Visual Studio 2010, this method does not throw an exception.

適用対象

こちらもご覧ください