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


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

Обновлен: Ноябрь 2007

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

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

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

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

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

0k7hxwz6.alert_note(ru-ru,VS.90).gifПримечание.

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

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

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

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

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

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

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

  5. Оставьте значение по умолчанию для элемента Использовать инструкции SQL и нажмите кнопку Далее.

  6. Выберите параметр UPDATE, INSERT или DELETE и нажмите кнопку Далее.

  7. Введите инструкцию SQL или воспользуйтесь окном Построитель запросов для упрощения создания, затем нажмите кнопку Далее.

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

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

  10. Скомпилируйте проект.

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

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

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

      либо

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

      Dim tableAdapter As New DataSetTableAdapters.TableAdapter

      0k7hxwz6.alert_note(ru-ru,VS.90).gifПримечание.

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

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

    TableAdapter.Query()

    TableAdapter.Query(Parameters)

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

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

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

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

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

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

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

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

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

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

    Dim sqlConnection1 As New SqlConnection("Your Connection String")
    Dim cmd As New SqlCommand
    Dim rowsAffected As Integer
    
    cmd.CommandText = "UPDATE Customers SET ContactTitle = 'Sales Manager' WHERE CustomerID = 'ALFKI'"
    cmd.CommandType = CommandType.Text
    cmd.Connection = sqlConnection1
    
    sqlConnection1.Open()
    
    rowsAffected = cmd.ExecuteNonQuery()
    
    sqlConnection1.Close()
    
    SqlConnection sqlConnection1 = new SqlConnection("Your Connection String");
    SqlCommand cmd = new SqlCommand();
    Int32 rowsAffected;
    
    cmd.CommandText = "UPDATE Customers SET ContactTitle = 'Sales Manager' WHERE CustomerID = 'ALFKI'";
    cmd.CommandType = CommandType.Text;
    cmd.Connection = sqlConnection1;
    
    sqlConnection1.Open();
    
    rowsAffected = cmd.ExecuteNonQuery();
    
    sqlConnection1.Close();
    

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

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

См. также

Задачи

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

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

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

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

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

Общие сведения о заполнении наборов данных и запросе данных

Ссылки

SqlCommand.ExecuteNonQuery

OleDbCommand.ExecuteNonQuery

OdbcCommand.ExecuteNonQuery

OracleCommand.ExecuteNonQuery