SqlCommand.Prepare SqlCommand.Prepare SqlCommand.Prepare SqlCommand.Prepare Method

定義

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 SqlCommand = 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を呼び出すことによってデータベースコンテキストを変更する場合は、を2回目に呼び出す必要があります。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.

を呼び出しExecute Prepareた後にメソッドを呼び出すと、 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.

適用対象

こちらもご覧ください