SqlCommand.Prepare Метод
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Создает подготовленную версию команды на экземпляре 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 ()
Реализации
Примеры
В следующем примере иллюстрируется использование метода 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
Комментарии
Если CommandType задано значение StoredProcedure, вызов должен завершиться успешно, хотя это может привести к Prepare no-op.
Перед вызовом Prepareукажите тип данных каждого параметра в инструкции, который необходимо подготовить. Для каждого параметра, имеющего тип данных переменной длины, необходимо задать Size для свойства максимальный размер, необходимый. Prepare возвращает ошибку, если эти условия не выполнены.
Замечание
Если контекст базы данных изменяется путем выполнения инструкции Transact-SQL USE <database> или вызова ChangeDatabase метода, Prepare необходимо вызвать второй раз.
При вызове Execute метода Prepareлюбое значение параметра, превышающее значение, указанное Size свойством, автоматически усечено до исходного указанного размера параметра, и ошибки усечения не возвращаются.
Выходные параметры (подготовленные или нет) должны иметь указанный пользователем тип данных. Если указать тип данных переменной длины, необходимо также указать максимальное Sizeзначение.
До Visual Studio 2010 Prepare вызвал исключение. Начиная с Visual Studio 2010 этот метод не создает исключение.