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

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

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

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

Примечание

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

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

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

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

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

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

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

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

    Откроется мастер настройки запроса TableAdapter.

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

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

  7. Оставьте значение по умолчанию Табличные данные и нажмите кнопку Далее.

  8. Задайте имена для каждого создаваемого метода (методов Заполнение таблицы данных или Возврат таблицы данных).

  9. Завершите работу мастера; запрос добавляется к адаптеру таблицы.

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

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

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

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

      -или-

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

      Dim tableAdapter As New DataSetTableAdapters.TableAdapter

      Примечание

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

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

    TableAdapter.Query()

    TableAdapter.Query(Parameters)

    TableAdapter.Query(DataTable, Parameters)

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

    Dim tableAdapter As New NorthwindDataSetTableAdapters.CustomersTableAdapter()
    tableAdapter.FillByCity(NorthwindDataSet.Customers, "Seattle")
    
    NorthwindDataSetTableAdapters.CustomersTableAdapter tableAdapter = 
        new NorthwindDataSetTableAdapters.CustomersTableAdapter();
    
    tableAdapter.FillByCity(northwindDataSet.Customers, "Seattle");
    

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

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

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

  • Ссылки на пространства имен System, System.Data и System.Xml.

  • Подключение к данным с именем SqlConnection1.

  • Таблицу с именем Customers в источнике данных, к которому подключается SqlConnection1. (В противном случае необходима допустимая инструкция SQL для источника данных).

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

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

    Dim sqlConnection1 As New SqlConnection("Your Connection String")
    Dim cmd As New SqlCommand
    Dim reader As SqlDataReader
    
    cmd.CommandText = "StoredProcedureName"
    cmd.CommandType = CommandType.StoredProcedure
    cmd.Connection = sqlConnection1
    
    sqlConnection1.Open()
    
    reader = cmd.ExecuteReader()
    ' Data is accessible through the DataReader object here.
    
    sqlConnection1.Close()
    
    SqlConnection sqlConnection1 = new SqlConnection("Your Connection String");
    SqlCommand cmd = new SqlCommand();
    SqlDataReader reader;
    
    cmd.CommandText = "StoredProcedureName";
    cmd.CommandType = CommandType.StoredProcedure;
    cmd.Connection = sqlConnection1;
    
    sqlConnection1.Open();
    
    reader = cmd.ExecuteReader();
    // Data is accessible through the DataReader object here.
    
    sqlConnection1.Close();
    

Безопасность

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

См. также

Задачи

Практическое руководство. Создание запросов TableAdapter

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

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

Ссылки

SqlCommand.ExecuteReader

OleDbCommand.ExecuteReader

OdbcCommand.ExecuteReader

OracleCommand.ExecuteReader

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

Заполнение набора данных