ExecuteScalar

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

Примечание

В случае группы запросов, разделенных знаком «;» метод ExecuteScalar возвращает значение первого поля первой записи из результатов первого запроса, который возвращает данные.

Синтаксис
public abstract Object ExecuteScalar();
Возвращаемое значение

Первый столбец первой строки результирующей выборки данных в виде объекта System.Object или null-значение, если требуемые данные не найдены.

Исключения
InvalidOperationException

Возможные причины:

  • текст команды не установлен;

  • команда не связана с соединением;

  • соединение не открыто;

  • команда не связана с транзакцией, открытой по соединению;

  • команда связана с открытым объектом DataReader.

Exception Для входного параметра не установлено значение или для параметра длиной больше 4000 байт не установлен тип BLOB.
LinterSqlException Код завершения СУБД ЛИНТЕР не равен 0.
Пример

Выполнение функции COUNT(*)

// C#
using System;
using System.Data;
using System.Data.Common;

class ExecuteScalarSample
{
  static void Main()
  {
    // Создание фабрики классов провайдера
    DbProviderFactory factory =
      DbProviderFactories.GetFactory("System.Data.LinterClient");
    // Соединение с БД
    DbConnection con = factory.CreateConnection();
    con.ConnectionString = "User ID=SYSTEM;Password=MANAGER8;Data Source=LOCAL";
    con.Open();
    // Создание объекта DbCommand
    DbCommand cmd = factory.CreateCommand();
    cmd.Connection = con;
    // Формирование текста SQL-запроса
    cmd.CommandText = "select count(*) from auto";
    // Выполнение SQL-запроса
    Object result = cmd.ExecuteScalar();
    // Обработка результатов запроса
    Console.WriteLine("Количество строк в таблице AUTO: " + result);
    // Освобождение ресурсов
    cmd.Dispose();
    con.Dispose();
  }
}
        Результат выполнения примера:
        Количество строк в таблице AUTO: 1000