SqlCommand.Prepare Methode

Definitie

Hiermee maakt u een voorbereide versie van de opdracht op een exemplaar van SQL Server.

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

Implementeringen

Voorbeelden

In het volgende voorbeeld ziet u het gebruik van de methode Prepare.

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

Opmerkingen

Als CommandType dit is ingesteld StoredProcedure, moet de aanroep Prepare slagen, hoewel dit een no-opkan veroorzaken.

Voordat u aanroept Prepare, geeft u het gegevenstype van elke parameter op in de instructie die moet worden voorbereid. Voor elke parameter met een gegevenstype variabele lengte moet u de Size eigenschap instellen op de maximale grootte die nodig is. Prepare retourneert een fout als niet aan deze voorwaarden wordt voldaan.

Note

Als de databasecontext wordt gewijzigd door de instructie Transact-SQL USE <database> uit te voeren of door de methode ChangeDatabase aan te roepen, moet Prepare een tweede keer worden aangeroepen.

Als u een methode aanroept na het aanroepenPrepare, wordt elke Execute parameterwaarde die groter is dan de waarde die door de Size eigenschap is opgegeven, automatisch afgekapt tot de oorspronkelijke opgegeven grootte van de parameter en worden er geen afkappingsfouten geretourneerd.

Uitvoerparameters (al dan niet voorbereid) moeten een door de gebruiker opgegeven gegevenstype hebben. Als u een gegevenstype variabelelengte opgeeft, moet u ook het maximum Sizeopgeven.

Vóór Visual Studio 2010 gooide Prepare een uitzondering. Vanaf Visual Studio 2010 genereert deze methode geen uitzondering.

Van toepassing op

Zie ook