Condividi tramite


SqlCommand.Prepare Metodo

Definizione

Crea una versione preparata del comando in un'istanza di 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 ()

Implementazioni

Esempio

Nell'esempio seguente viene illustrato l'uso del metodo 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

Commenti

Se CommandType è impostato su StoredProcedure, la chiamata a Prepare deve avere esito positivo, anche se può causare un no-op.

Prima di chiamare Prepare, specificare il tipo di dati di ogni parametro nell'istruzione da preparare. Per ogni parametro con tipo di dati di lunghezza variabile, è necessario impostare la Size proprietà sulla dimensione massima necessaria. Prepare restituisce un errore se queste condizioni non vengono soddisfatte.

Nota

Se il contesto del database viene modificato eseguendo l'istruzione Transact-SQL USE <database> o chiamando il ChangeDatabase metodo, Prepare è necessario chiamare una seconda volta.

Se si chiama un Execute metodo dopo aver chiamato Prepare, qualsiasi valore di parametro maggiore del valore specificato dalla Size proprietà viene troncato automaticamente alla dimensione specificata originale del parametro e non vengono restituiti errori di troncamento.

I parametri di output (se preparati o meno) devono avere un tipo di dati specificato dall'utente. Se si specifica un tipo di dati di lunghezza variabile, è necessario specificare anche il valore massimo Size.

Prima di Visual Studio 2010, Prepare ha generato un'eccezione. A partire da Visual Studio 2010, questo metodo non genera un'eccezione.

Si applica a

Vedi anche