Udostępnij za pośrednictwem


SqlCommand.Prepare Metoda

Definicja

Tworzy przygotowaną wersję polecenia w wystąpieniu programu SQL Server.

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

Implementuje

Przykłady

W poniższym przykładzie pokazano użycie Prepare metody .

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

Uwagi

Jeśli CommandType ustawiono StoredProcedurewartość , wywołanie Prepare metody powinno zakończyć się powodzeniem, chociaż może to spowodować no-op.

Przed wywołaniem Preparemetody określ typ danych każdego parametru w instrukcji do przygotowania. Dla każdego parametru, który ma typ danych o zmiennej długości, należy ustawić Size właściwość na wymagany maksymalny rozmiar. Prepare Zwraca błąd, jeśli te warunki nie są spełnione.

Uwaga / Notatka

Jeśli kontekst bazy danych zostanie zmieniony przez wykonanie instrukcji Transact-SQL USE <database> lub wywołanie ChangeDatabase metody , Prepare należy wywołać metodę po raz drugi.

Jeśli wywołasz metodę Execute po wywołaniu Preparemetody , każda wartość parametru większa niż wartość określona przez Size właściwość zostanie automatycznie obcięta do oryginalnego określonego rozmiaru parametru i nie zostaną zwrócone żadne błędy obcięcia.

Parametry wyjściowe (niezależnie od tego, czy są przygotowane, czy nie) muszą mieć typ danych określony przez użytkownika. Jeśli określisz typ danych o zmiennej długości, musisz również określić maksymalną wartość Size.

Przed programem Visual Studio 2010 Prepare wystąpił wyjątek. Począwszy od programu Visual Studio 2010, ta metoda nie zgłasza wyjątku.

Dotyczy

Zobacz też