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


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  6. Выберите параметр SELECT, возвращающий одиночное значение, и нажмите кнопку Далее.

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

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

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

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

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

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

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

      -или-

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

      Dim tableAdapter As New DataSetTableAdapters.TableAdapter

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

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

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

    TableAdapter.Query()

    TableAdapter.Query(Parameters)

  3. Скорее всего, необходимо присвоить значение, возвращенное запросом в переменную.Запросы TableAdapter, возвращающие одиночное значение, возвращают тип данных, основанный на запросе (в отличие от ExecuteScalar, возвращающего объект).Например, если запрос TableAdapter выбирает один столбец, тип данных которого является целым числом, возвращаемое запросом значение представляет собой целое число.Если столбец допускает значения NULL, то возвращаемое значение имеет тип, допускающий значение NULL (например Nullable(Of Integer)).Дополнительные сведения о Nullable типах в C# содержатся в разделе Nullable.Полный код объявления экземпляра TableAdapter и выполнения запроса должен выглядеть примерно следующим образом (предполагается, что возвращаемое значение является целым; настройте код согласно типу данных, возвращаемому запросом):

    Dim tableAdapter As New NorthwindDataSetTableAdapters.CustomersTableAdapter()
    
    Dim returnValue As Integer
    returnValue = CType(tableAdapter.GetCustomerCount(), Integer)
    
    NorthwindDataSetTableAdapters.CustomersTableAdapter tableAdapter = 
        new NorthwindDataSetTableAdapters.CustomersTableAdapter();
    
    int returnValue = (int)tableAdapter.GetCustomerCount();
    

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

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

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

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

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

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

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

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

    Dim sqlConnection1 As New SqlConnection("Your Connection String")
    Dim cmd As New SqlCommand
    Dim returnValue As Object
    
    cmd.CommandText = "SELECT COUNT(*) FROM Customers"
    cmd.CommandType = CommandType.Text
    cmd.Connection = sqlConnection1
    
    sqlConnection1.Open()
    
    returnValue = cmd.ExecuteScalar()
    
    sqlConnection1.Close()
    
    SqlConnection sqlConnection1 = new SqlConnection("Your Connection String");
    SqlCommand cmd = new SqlCommand();
    Object returnValue;
    
    cmd.CommandText = "SELECT COUNT(*) FROM Customers";
    cmd.CommandType = CommandType.Text;
    cmd.Connection = sqlConnection1;
    
    sqlConnection1.Open();
    
    returnValue = cmd.ExecuteScalar();
    
    sqlConnection1.Close();
    

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

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

См. также

Задачи

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

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

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

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

Ссылки

SqlCommand.ExecuteScalar

OleDbCommand.ExecuteScalar

OdbcCommand.ExecuteScalar

OracleCommand.ExecuteScalar

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

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