SqlCommand.Prepare Methode

Definition

Erstellt eine vorbereitete Version des Befehls in einer Instanz von 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 ()

Implementiert

Beispiele

Im folgenden Beispiel wird die Verwendung der Prepare-Methode gezeigt.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

Hinweise

Wenn CommandType auf StoredProcedurefestgelegt ist, sollte der Prepare-erfolgreich aufgerufen werden, obwohl dies möglicherweise einen No-op-Vorgang verursacht.If CommandType is set to StoredProcedure, the call to Prepare should succeed, although it may cause a no-op.

Bevor Sie Prepareaufrufen, geben Sie den Datentyp der einzelnen Parameter in der Anweisung an, die vorbereitet werden soll.Before you call Prepare, specify the data type of each parameter in the statement to be prepared. Für jeden Parameter, der über einen Datentyp variabler Länge verfügt, müssen Sie die Size-Eigenschaft auf die maximal erforderliche Größe festlegen.For each parameter that has a variable length data type, you must set the Size property to the maximum size needed. Prepare gibt einen Fehler zurück, wenn diese Bedingungen nicht erfüllt sind.Prepare returns an error if these conditions are not met.

Hinweis

Wenn der Daten Bank Kontext durch Ausführen der Transact-SQL-USE <database>-Anweisung oder durch Aufrufen der ChangeDatabase-Methode geändert wird, muss Prepare ein zweites Mal aufgerufen werden.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.

Wenn Sie eine Execute Methode aufrufen, nachdem Sie Prepareaufgerufen haben, wird jeder Parameterwert, der größer ist als der Wert, der von der Eigenschaft Size angegeben wird, automatisch auf die ursprünglich angegebene Größe des Parameters gekürzt, und es werden keine abgeschnittene Fehler zurückgegeben.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.

Ausgabeparameter (ob vorbereitet oder nicht) müssen einen benutzerdefinierten Datentyp aufweisen.Output parameters (whether prepared or not) must have a user-specified data type. Wenn Sie einen Datentyp mit variabler Länge angeben, müssen Sie auch die maximale Sizeangeben.If you specify a variable length data type, you must also specify the maximum Size.

Vor Visual Studio 2010 hat Prepare eine Ausnahme ausgelöst.Prior to Visual Studio 2010, Prepare threw an exception. Ab Visual Studio 2010 löst diese Methode keine Ausnahme aus.Beginning in Visual Studio 2010, this method does not throw an exception.

Gilt für:

Siehe auch