Разница между методами ExecuteScalar и ExecuteReader заключается в том, что каждый из них используется для разных типов запросов: 2
- ExecuteScalar применяется для команд, возвращающих одно значение, например, результат агрегатной функции (COUNT, MAX, MIN и т. д.) или любого запроса, возвращающего ровно одно значение (даже если это значение из одной строки и одного столбца). 2 Этот метод возвращает значение первого поля первой строки из набора строк, сгенерированного командой. 1
- ExecuteReader используется, когда команда должна вернуть набор результатов, например, оператор SELECT. 2 Этот метод подходит для запросов, возвращающих несколько строк и столбцов данных. 2 Он возвращает объект DataReader, который является оболочкой однонаправленного курсора, доступного только для чтения. 1