Данное руководство устарело. Актуальное руководство: по ADO.NET и работе с базами данных в .NET 6
При отправке запросов мы можем использовать специальные встроенные функции 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().