Udostępnij za pośrednictwem


SqlCommand.Prepare Metoda

Definicja

Tworzy przygotowaną wersję polecenia w wystąpieniu 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 wartość StoredProcedure, wywołanie powinno zakończyć się Prepare powodzeniem, chociaż może to spowodować brak operacji.

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 zostaną spełnione.

Uwaga

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

Jeśli wywołasz metodę po wywołaniu Preparemetody , każda wartość parametru większa niż wartość określona przez Size właściwość zostanie automatycznie obcięta Execute 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), muszą mieć określony przez użytkownika typ danych. 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ż