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


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

 

Опубликовано: Апрель 2016

Для выполнения хранимой процедуры, не возвращающей значения, можно запустить запрос адаптера таблицы TableAdapter, настроенный для запуска хранимой процедуры (например, CustomersTableAdapter.UpdateTableData(CustomersDataTable)).

Если приложение не использует адаптеры таблиц, вызовите метод ExecuteNonQuery объекта команды, присвоив его свойству CommandType значение StoredProcedure. ("Объектом команды" называется определенная команда для поставщика данных платформы .NET Framework, используемого приложением. Например, если приложение использует поставщик данных .NET Framework для SQL Server, то объект команды будет SqlCommand.)

В следующих примерах показано выполнение хранимых процедур, не возвращающих значения из базы данных, с помощью адаптеров таблиц TableAdapter или объектов команд. Дополнительные сведения о запросах с использованием адаптеров таблиц и команд содержатся в разделе Заполнение набора данных.

Примечание

Отображаемые на компьютере имена или расположения некоторых элементов пользовательского интерфейса Visual Studio могут отличаться от указанных в следующих инструкциях. Это зависит от имеющегося выпуска Visual Studio и используемых параметров. Дополнительные сведения см. в разделе Персонализация интегрированной среды разработки Visual Studio.

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

В этом примере показано создание запроса адаптера таблицы с помощью мастер настройки запроса TableAdapter, а также приводятся сведения об объявлении экземпляра адаптера таблицы и выполнении запроса.

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

  1. Откройте набор данных в Конструкторе наборов данных. Дополнительные сведения см. в разделе Практическое руководство. Открытие набора данных в конструкторе наборов данных.

  2. Создайте адаптер таблицы, если не сделали этого ранее. Дополнительные сведения о создании адаптеров таблиц см. в разделе Практическое руководство. Создание адаптера таблицы.

  3. Если для адаптера таблицы TableAdapter уже имеется запрос, использующий хранимую процедуру, которая не возвращает значение, переходите к процедуре "Объявление экземпляра адаптера таблицы TableAdapter и выполнение запроса". В противном случае необходимо продолжить выполнение шага 4, чтобы создать новый запрос, не возвращающий значение.

  4. Щелкните требуемый адаптер таблиц правой кнопкой мыши и используйте контекстное меню для добавления запроса.

    Откроется Мастер настройки запроса адаптера таблицы.

  5. Выберите Использовать существующую сохраненную процедуру и нажмите кнопку Далее.

  6. Выберите сохраненную процедуру из раскрывающегося списка, и затем нажмите Далее.

  7. Выберите параметр Нет значения и нажмите кнопку Далее.

  8. Введите имя для запроса.

  9. Нажмите кнопку Далее или Готово, чтобы завершить работу мастера; запрос добавляется в адаптер таблицы TableAdapter.

  10. Построить проект.

Чтобы объявить экземпляр адаптера таблиц и выполнить запрос:

  1. Объявите экземпляр адаптера таблицы TableAdapter, содержащий запрос, который требуется выполнить.

    • Для создания экземпляра с помощью средств времени проектирования, перетащите нужный адаптер таблицы TableAdapter с Панели элементов. (Компонент в проекте теперь отображается в Панели элементов под заголовком, совпадающим с именем проекта.) Если адаптер таблиц не отображается в Панели элементов, может потребоваться скомпилировать проект.

      -или-

    • Чтобы создать экземпляр в коде, подставьте в следующий код имена DataSet и адаптера таблиц.

      Dim tableAdapter As New DataSetTableAdapters.TableAdapter

      Примечание

      Адаптеры таблиц на самом деле не располагаются внутри связанных с ними классов наборов данных.Каждый набор данных имеет соответствующую коллекцию адаптеров таблиц в своих собственных пространствах имен.Например, если имеется набор данных с именем SalesDataSet, то пространство имен SalesDataSetTableAdapters будет содержать его адаптеры таблиц.

  2. Вызовите запрос, как вызвали бы любой другой метод в коде. Запрос представляет собой метод адаптера таблиц. Подставьте в следующий код имя адаптера таблиц и имя запроса. Кроме того, необходимо передать любые параметры, необходимые запросу. Если вы не уверены в том, что запросу необходимы параметры, и какие именно параметры требуются, то проверьте в IntelliSense требуемую сигнатуру запроса. В зависимости то того, принимает ли запрос параметры или нет, код будет выглядеть аналогично одному из следующих примеров:

    TableAdapter.Query()

    TableAdapter.Query(Parameters)

    Полный код объявления экземпляра адаптера таблицы и выполнения запроса должен выглядеть примерно следующим образом:

    NorthwindDataSetTableAdapters.CustomersTableAdapter tableAdapter = 
        new NorthwindDataSetTableAdapters.CustomersTableAdapter();
    
    int rowsAffected = tableAdapter.UpdateContactTitle("Sales Manager", "ALFKI");
    
    Dim tableAdapter As New NorthwindDataSetTableAdapters.CustomersTableAdapter()
    
    Dim rowsAffected As Integer
    rowsAffected = CType(tableAdapter.UpdateContactTitle("Sales Manager", "ALFKI"), Integer)
    

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

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

Этот пример использует объект SqlCommand и требует:

Для выполнения хранимой процедуры, не возвращающей значения, с помощью DataCommand

  • Добавьте следующий код к методу, из которого должна выполняться хранимая процедура. Вызовите метод ExecuteNonQuery команды без возврата значения (например ExecuteNonQuery).

    SqlConnection sqlConnection1 = new SqlConnection("Your Connection String");
    SqlCommand cmd = new SqlCommand();
    Int32 rowsAffected;
    
    cmd.CommandText = "StoredProcedureName";
    cmd.CommandType = CommandType.StoredProcedure;
    cmd.Connection = sqlConnection1;
    
    sqlConnection1.Open();
    
    rowsAffected = cmd.ExecuteNonQuery();
    
    sqlConnection1.Close();
    
    Dim sqlConnection1 As New SqlConnection("Your Connection String")
    Dim cmd As New SqlCommand
    Dim rowsAffected As Integer
    
    cmd.CommandText = "StoredProcedureName"
    cmd.CommandType = CommandType.StoredProcedure
    cmd.Connection = sqlConnection1
    
    sqlConnection1.Open()
    
    rowsAffected = cmd.ExecuteNonQuery()
    
    sqlConnection1.Close()
    

Безопасность платформы .NET Framework

Для доступа к базе данных и выполнения инструкции SQL приложению требуется разрешение.

См. также

SqlCommand.ExecuteNonQuery
OleDbCommand.ExecuteNonQuery
OdbcCommand.ExecuteNonQuery
OracleCommand.ExecuteNonQuery
Практическое руководство. Создание запросов TableAdapter
Практическое руководство. Изменение запросов TableAdapter
Практическое руководство. Заполнение данными набора данных
Заполнение набора данных
Практическое руководство. Установка и получение параметров командных объектов