Поделиться через


IDbCommand.Prepare Метод

Определение

Создает подготовленную (или скомпилированную) версию команды в источнике данных.

public:
 void Prepare();
public void Prepare ();
abstract member Prepare : unit -> unit
Public Sub Prepare ()

Исключения

Connection не указывается.

-или-

Значением параметра Connection не является Open().

Примеры

В следующем примере создается экземпляр производного класса OleDbCommandи открывается соединение. Затем в примере подготавливается хранимая процедура в источнике данных путем передачи строки, которая является инструкцией SQL Select, и строки для подключения к источнику данных.

private static void OleDbCommandPrepare(string connectionString)
{
    using (OleDbConnection connection = new
               OleDbConnection(connectionString))
    {
        connection.Open();

        // Create the Command.
        OleDbCommand command = new OleDbCommand();

        // Set the Connection, CommandText and Parameters.
        command.Connection = connection;
        command.CommandText =
            "INSERT INTO dbo.Region (RegionID, RegionDescription) VALUES (?, ?)";
        command.Parameters.Add("RegionID", OleDbType.Integer, 4);
        command.Parameters.Add("RegionDescription", OleDbType.VarWChar, 50);
        command.Parameters[0].Value = 20;
        command.Parameters[1].Value = "First Region";

        // Call  Prepare and ExecuteNonQuery.
        command.Prepare();
        command.ExecuteNonQuery();

        // Change parameter values and call ExecuteNonQuery.
        command.Parameters[0].Value = 21;
        command.Parameters[1].Value = "SecondRegion";
        command.ExecuteNonQuery();
    }
}
Public Sub OleDbCommandPrepare(ByVal connectionString As String)

    Using connection As OleDbConnection = New _
        OleDbConnection(connectionString)
        connection.Open()

        ' Create the Command.
        Dim command As New OleDbCommand()

        ' Set the Connection, CommandText and Parameters.
        command.Connection = connection
        command.CommandText = _
          "INSERT INTO dbo.Region (RegionID, RegionDescription) VALUES (?, ?);"
        command.Parameters.Add("RegionID", OleDbType.Integer, 4)
        command.Parameters.Add("RegionDescription", OleDbType.VarWChar, 50)
        command.Parameters(0).Value = 20
        command.Parameters(1).Value = "First Region"

        ' Call  Prepare and ExecuteNonQuery.
        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 Если свойство имеет значение TableDirect, Prepare ничего не делает. Если CommandType для задано значение StoredProcedure, вызов Prepare должен завершиться успешно, хотя это может привести к отключению операции. Сервер автоматически кэширует планы для повторного использования по мере необходимости; Поэтому нет необходимости вызывать этот метод непосредственно в клиентском приложении.

Применяется к