Метод SqlCeCommand.Prepare
Создает подготовленную (скомпилированную) версию команды для источника данных.
Пространство имен: System.Data.SqlServerCe
Сборка: System.Data.SqlServerCe (в System.Data.SqlServerCe.dll)
Синтаксис
'Декларация
Public Overrides Sub Prepare
'Применение
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()
Реализует
Исключения
Исключение | Условие |
---|---|
InvalidOperationException | Не задано значение Connection. -или- Значение Connection отлично от Open. |
Замечания
Если свойство CommandType имеет значение TableDirect, метод Prepare не выполняет никаких действий.
Прежде чем вызвать метод Prepare, следует указать тип данных для каждого из параметров в подготавливаемой инструкции. Для параметров, имеющих типы данных переменной длины, необходимо в свойстве Size задать максимальный размер. Если не соблюсти эти условия, метод Prepare вернет ошибку.
Если метод Execute вызывается после метода Prepare, то все значения параметров, длина которых больше значения, заданного свойством Size, автоматически усекаются до первоначального указанного размера параметра, при этом ошибки усечения не возвращаются.
Примеры
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();