Получение скалярных значений

Данное руководство устарело. Актуальное руководство: по ADO.NET и работе с базами данных в .NET 6

Последнее обновление: 31.10.2015

При отправке запросов мы можем использовать специальные встроенные функции SQL, например, Min, Max, Sum, Count и т.д., которые не выполняют операции с объектами и не извлекают объекты, а возвращают какое-то определенное значение. Например, функция Count подсчитывает количество объектов. И для работы с такими функциями в SqlCommand определен специальный метод ExecuteScalar. Например, найдем число всех объектов в таблице и получим минимальный возраст пользователей:

string connectionString = @"Data Source=.\SQLEXPRESS;Initial Catalog=usersdb;Integrated Security=True";

string sqlExpression = "SELECT COUNT(*) FROM Users";
using (SqlConnection connection = new SqlConnection(connectionString))
{
    connection.Open();
    SqlCommand command = new SqlCommand(sqlExpression, connection);
    object count = command.ExecuteScalar();

    command.CommandText = "SELECT MIN(Age) FROM Users";
    object minAge = command.ExecuteScalar();

    Console.WriteLine("В таблице {0} объектов", count);
    Console.WriteLine("Минимальный возраст: {0}", minAge);
}

Выражение "SELECT COUNT(*) FROM Users" количество объектов в таблице Users, а выражение "SELECT MIN(Age) FROM Users" находит минимальное значение столбца Age. В качестве результата метод ExecuteScalar() возвращает объект типа object.

И если мы захотим получать данные асинхронным образом, то мы можем использовать асинхронную версию этого метода - ExecuteScalarAsync().

Помощь сайту
Юмани:
410011174743222
Перевод на карту
Номер карты:
4048415020898850