SqlCeCommand.Prepare Método
Crea una versión preparada (o compilada) del comando en el origen de datos.
Espacio de nombres: System.Data.SqlServerCe
Ensamblado: System.Data.SqlServerCe (en System.Data.SqlServerCe.dll)
Sintaxis
'Declaración
Public Overrides Sub Prepare
'Uso
Dim instance As SqlCeCommand
instance.Prepare()
public override void Prepare()
public:
virtual void Prepare() override
abstract Prepare : unit -> unit
override Prepare : unit -> unit
public override function Prepare()
Implementa
Excepciones
Excepción | Condición |
---|---|
InvalidOperationException | Connection no se ha establecido. O bien El valor de Connection no es Open. |
Comentarios
Si la propiedad CommandType se establece en TableDirect, Prepare no realiza ninguna acción.
Antes de llamar a Prepare, especifique el tipo de datos de cada parámetro de la instrucción que se va a preparar. En el caso de los parámetros que tengan un tipo de datos de longitud variable, la propiedad Size debe establecerse en el tamaño máximo que sea necesario. Prepare devuelve un error si no se cumplen estas condiciones.
Si se llama a un método Execute después de llamar a Prepare, todo valor de parámetro que sea mayor que el valor especificado por la propiedad Size queda truncado automáticamente al tamaño original especificado del parámetro y no se devuelve ningún error por truncamiento.
Ejemplos
Dim conn As New SqlCeConnection("Data Source = MyDatabase.sdf;")
conn.Open()
Dim command As SqlCeCommand = conn.CreateCommand()
' Create and prepare a SQL statement
'
command.CommandText = "INSERT INTO Region (RegionID, RegionDescription) VALUES (@id, @desc)"
Dim param As SqlCeParameter = Nothing
' NOTE:
' For optimal performance, make sure you always set the parameter
' type and the maximum size - this is especially important for non-fixed
' types such as NVARCHAR or NTEXT; In case of named parameters,
' SqlCeParameter instances do not need to be added to the collection
' in the order specified in the query; If however you use ? as parameter
' specifiers, then you do need to add the parameters in the correct order
'
param = New SqlCeParameter("@id", SqlDbType.Int)
command.Parameters.Add(param)
param = New SqlCeParameter("@desc", SqlDbType.NVarChar, 100)
command.Parameters.Add(param)
command.Parameters("@desc").Size = 100
' Calling Prepare after having set the CommandText and parameters
'
command.Prepare()
' Execute the SQL statement
'
command.ExecuteNonQuery()
' Change parameter values and call ExecuteNonQuery again
'
command.Parameters(0).Value = 21
command.Parameters(1).Value = "mySecondRegion"
command.ExecuteNonQuery()
SqlCeConnection conn = new SqlCeConnection("Data Source = MyDatabase.sdf;");
conn.Open();
SqlCeCommand command = conn.CreateCommand();
// Create and prepare a SQL statement
//
command.CommandText = "INSERT INTO Region (RegionID, RegionDescription) VALUES (@id, @desc)";
SqlCeParameter param = null;
// NOTE:
// For optimal performance, make sure you always set the parameter
// type and the maximum size - this is especially important for non-fixed
// types such as NVARCHAR or NTEXT; In case of named parameters,
// SqlCeParameter instances do not need to be added to the collection
// in the order specified in the query; If however you use ? as parameter
// specifiers, then you do need to add the parameters in the correct order
//
param = new SqlCeParameter("@id", SqlDbType.Int);
command.Parameters.Add(param);
param = new SqlCeParameter("@desc", SqlDbType.NVarChar, 100);
command.Parameters.Add(param);
command.Parameters["@desc"].Size = 100;
// Calling Prepare after having set the CommandText and parameters
//
command.Prepare();
// Execute the SQL statement
//
command.ExecuteNonQuery();
// Change parameter values and call ExecuteNonQuery again
//
command.Parameters[0].Value = 21;
command.Parameters[1].Value = "mySecondRegion";
command.ExecuteNonQuery();