При отправке запросов мы можем использовать специальные встроенные функции SQL, например, Min, Max, Sum, Count и т.д., которые не выполняют операции с объектами и не извлекают объекты, а возвращают какое-то определенное значение. Например, функция Count подсчитывает количество объектов. И для работы с такими функциями в SqlCommand определен специальный метод ExecuteScalar
. Например, найдем число всех объектов в таблице и получим минимальный возраст пользователей:
Example
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
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().