SqlCommand.Prepare Metod

Definition

Skapar en förberedd version av kommandot på en instans av 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 ()

Implementeringar

Exempel

I följande exempel visas användningen av metoden 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

Kommentarer

Om CommandType är inställt på StoredProcedureska anropet till Prepare lyckas, även om det kan orsaka en no-op.

Innan du anropar Prepareanger du datatypen för varje parameter i instruktionen som ska förberedas. För varje parameter som har en datatyp med variabel längd måste du ange Size egenskapen till den maximala storlek som behövs. Prepare returnerar ett fel om dessa villkor inte uppfylls.

Note

Om databaskontexten ändras genom att köra instruktionen Transact-SQL USE <database> eller genom att anropa metoden ChangeDatabase måste Prepare anropas en andra gång.

Om du anropar en Execute metod efter anropet Preparetrunkeras alla parametervärden som är större än värdet som anges av Size egenskapen automatiskt till parameterns ursprungliga angivna storlek och inga trunkeringsfel returneras.

Utdataparametrar (oavsett om de är förberedda eller inte) måste ha en användardefinerad datatyp. Om du anger en datatyp för variabel längd måste du också ange det maximala Size.

Före Visual Studio 2010 utlöste Prepare ett undantag. Från och med Visual Studio 2010 utlöser inte den här metoden något undantag.

Gäller för

Se även