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


Практическое руководство. Установка и получение параметров командных объектов

При использовании командных объектов для выполнения команд над базой данных выполняемые инструкции SQL или хранимые процедуры часто требуют задания параметров.Ниже приведен пример простой инструкции Update, для которой требуются параметры:

UPDATE Employees
SET LastName = @LastName, FirstName = @FirstName, BirthDate = @BirthDate
WHERE (EmployeeID = @EmployeeID)

При выполнении этой инструкции необходимо указать значения для всех параметров (@LastName, @FirstName, @BirthDate и @EmployeeID).Для этого используются объекты параметров.Объекты команд поддерживают коллекцию параметров (например, Parameters), содержащую набор объектов типа SqlParameter, OleDbParameter, OdbcParameter или OracleParameter.В коллекции содержится по одному объекту параметров для каждого параметра, который требуется передать.Кроме того, при вызове хранимой процедуры может потребоваться дополнительный параметр, чтобы принять значение, возвращаемое процедурой.

ПримечаниеПримечание

Обычно при использовании набора данных команды выполняются не напрямую.Вместо этого параметры передаются запросам адаптера таблицы. Для получения дополнительных сведений см. Практическое руководство. Заполнение данными набора данных.

Задание значений параметров

Перед выполнением команды необходимо задать значения для всех ее параметров.

Чтобы задать значение параметра

  • Для каждого параметра в коллекции параметров команды установите его свойство Value.

    В следующем примере показано, как задать параметры перед выполнением команды, ссылающейся на хранимую процедуру.В примере предполагается, что коллекция параметров уже настроена и содержит три параметра с именами au_id, au_lname и au_fname.Отдельные параметры задаются по именам для большей понятности.

    With oleDbCommand1
        .CommandText = "UpdateAuthor"
        .CommandType = System.Data.CommandType.StoredProcedure
        .Parameters("au_id").Value = "172-32-1176"
        .Parameters("au_lname").Value = "White"
        .Parameters("au_fname").Value = "Johnson"
    End With
    
    OleDbConnection1.Open()
    oleDbCommand1.ExecuteNonQuery()
    OleDbConnection1.Close()
    
    oleDbCommand1.CommandText = "UpdateAuthor";
    oleDbCommand1.CommandType = System.Data.CommandType.StoredProcedure;
    
    oleDbCommand1.Parameters["au_id"].Value = "172-32-1176";
    oleDbCommand1.Parameters["au_lname"].Value = "White";
    oleDbCommand1.Parameters["au_fname"].Value = "Johnson";
    
    oleDbConnection1.Open();
    oleDbCommand1.ExecuteNonQuery();
    oleDbConnection1.Close();
    

Получение возвращаемых значений

Хранимые процедуры часто возвращают значения вызвавшему их приложению.

Чтобы получить значения, возвращаемые процедурами

  1. Создайте параметры, значение свойства Direction которых установлено равным Output или InputOutput (если параметр используется в процедуре и для получения, и для отправки значений).Убедитесь, что тип данных параметра соответствует ожидаемому вовращаемому значению.

  2. После выполнения процедуры считайте значение свойства Value параметра, переданного процедурой.

Чтобы получить значение, возвращаемое процедурой

  1. Создайте параметры, у которых значение свойства Direction равно ReturnValue.

    ПримечаниеПримечание

    Объект параметра для возвращаемого значения должен быть первым элементом в коллекции параметров.

  2. Убедитесь, что тип данных параметра соответствует ожидаемому вовращаемому значению.

    ПримечаниеПримечание

    SQL-инструкции Update, Insert и Delete возвращают целое число, которое обозначает количество измененных этими инструкциями записей.Это значение можно получить как возвращаемое значение метода ExecuteNonQuery.Дополнительные сведения см. в разделе Specifying Parameters and Return Values.

В следующем примере показано, как получить значение, возвращаемое хранимой процедурой с именем CountAuthors.В этом случае предполагается, что первый параметр в коллекции параметров команд имеет имя "retvalue" и настроен как ReturnValue.

Dim returnValue As Integer

oleDbCommand1.CommandText = "CountAuthors"
oleDbCommand1.CommandType = CommandType.StoredProcedure

oleDbConnection1.Open()
oleDbCommand1.ExecuteNonQuery()
oleDbConnection1.Close()

returnValue = CType(oleDbCommand1.Parameters("retvalue").Value, Integer)
MessageBox.Show("Return Value = " & returnValue.ToString())
int returnValue;

oleDbCommand1.CommandText = "CountAuthors";
oleDbCommand1.CommandType = CommandType.StoredProcedure;

oleDbConnection1.Open();
oleDbCommand1.ExecuteNonQuery();
oleDbConnection1.Close();

returnValue = (int)(oleDbCommand1.Parameters["retvalue"].Value);
MessageBox.Show("Return Value = " + returnValue.ToString());

См. также

Задачи

Практическое руководство. Создание и выполнение инструкций SQL, возвращающих строки

Практическое руководство. Создание и выполнение инструкции SQL, возвращающей одиночное значение

Практическое руководство. Создание и выполнение инструкций SQL, не возвращающих значения

Практическое руководство. Выполнение хранимой процедуры, возвращающей строки

Практическое руководство. Выполнение хранимой процедуры, возвращающей одиночное значение

Практическое руководство. Выполнение хранимой процедуры, не возвращающей значения

Основные понятия

Выборка данных в приложение

Using Parameters with a DataAdapter

Specifying Parameters and Return Values