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


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

 override void Prepare();
public override void Prepare ();
override this.Prepare : unit -> unit
Public Overrides 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))
        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";

        // Call Prepare after setting the Commandtext and Parameters.

        // Change parameter values and call ExecuteNonQuery.
        command.Parameters[0].Value = 21;
        command.Parameters[1].Value = "Second Region";
Private Sub SqlCommandPrepareEx(ByVal connectionString As String)
    Using connection As New SqlConnection(connectionString)
        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"

        ' Call Prepare after setting the Commandtext and Parameters.

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


場合CommandTypeに設定されているStoredProcedureへの呼び出しPrepareno-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.

呼び出す場合、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.