Відповіді:
ExecuteScalarзазвичай використовується, коли ваш запит повертає єдине значення. Якщо вона повертається більше, то результат - перший стовпець першого ряду. Прикладом може бути SELECT @@IDENTITY AS 'Identity'.ExecuteReaderвикористовується для будь-якого набору результатів з кількома рядками / стовпцями (наприклад, SELECT col1, col2 from sometable).ExecuteNonQuery зазвичай використовується для операторів SQL без результатів (наприклад, UPDATE, INSERT тощо).ExecuteNonQueryможе повернути кількість порушених рядків.
ExecuteNonQuery ():
ExecuteReader ():
ExecuteScalar ():
Довідкова URL-адреса:
http://nareshkamuni.blogspot.in/2012/05/what-is-difference-between.html
Кожна з них - виконання різного типу.
ExecuteScalar буде типом запиту, який повертає єдине значення.
Прикладом може бути повернення згенерованого ідентифікатора після вставки.
INSERT INTO my_profile (Address) VALUES ('123 Fake St.');
SELECT CAST(scope_identity() AS int)
ExecuteReader дає вам зчитувач даних назад, який дозволить вам читати всі стовпці результатів по черзі .
Прикладом може слугувати інформація про профіль для одного або декількох користувачів.
SELECT * FROM my_profile WHERE id = '123456'
ExecuteNonQuery - це будь-який SQL, який не повертає значення, але насправді виконує таку форму роботи, як вставлення чи видалення чи змінення чогось.
Прикладом може бути оновлення профілю користувача в базі даних.
UPDATE my_profile SET Address = '123 Fake St.' WHERE id = '123456'
З документів (зауважте: MSDN - це зручний ресурс, коли ви хочете знати, що робити!):
Використовуйте метод ExecuteScalar, щоб отримати одне значення (наприклад, сукупне значення) з бази даних. Для цього потрібно менше коду, ніж використання методу ExecuteReader, а потім виконання операцій, необхідних для генерації єдиного значення, використовуючи дані, повернуті SqlDataReader.
Надсилає CommandText до з'єднання та створює SqlDataReader.
... і від SqlDataReader ...
Забезпечує спосіб зчитування лише вперед потоку рядків із бази даних SQL Server. Цей клас не може бути успадкований.
Ви можете використовувати ExecuteNonQuery для виконання операцій з каталогом (наприклад, запитів структури бази даних або створення об'єктів бази даних, таких як таблиці), або для зміни даних у базі даних без використання DataSet, виконавши операції UPDATE, INSERT або DELETE.
Щоб додати те, що опублікували інші:
ExecuteScalar концептуально повертає крайній лівий стовпець із першого ряду набору результатів із запиту; ви можете ExecuteScalar SELECT * FROM з персоналу, але ви отримаєте лише першу клітинку результуючих рядків, що зазвичай використовуються для запитів, що повертають одне значення. Я не 100% впевнений , SQLServer але в Oracle, ви Wouldnt використовувати його для запуску функції (код бази даних , яка повертає одне значення) і очікувати , що вона дасть вам повертається значення функції , навіть якщо функції повертають одне значення. Однак, якщо ви виконуєте функцію як частину запиту, наприклад, SELECT SUBSTR ('abc', 1, 1) FROM DUAL, це дасть повернене значення в силу того, що значення, що повертається, зберігається в верхньому лівому верхньому куті. комірка отриманого набору рядків
ExecuteNonQuery буде використовуватися для запуску збережених в базі даних процедур, функцій та запитів, що змінюють дані (ВСТАВКА / ОНОВЛЕННЯ / УДАЛИТИ) або змінюють структуру бази даних (СТВОРИТИ ТАБЛИЦЮ ...). Зазвичай зворотне значення виклику вказує на те, скільки рядків вплинуло на операцію, але перевірте документацію БД, щоб гарантувати це
ExecuteReader() виконує запит SQL, який повертає постачальнику даних DBDataReader об'єкт, який забезпечує лише пересилання та доступ лише для читання для результату запиту.
ExecuteScalar()подібний до ExecuteReader()методу, який призначений для одиночного запиту, такого як отримання кількості записів.
ExecuteNonQuery() виконати не запит, який працює зі створенням, видаленням, оновленням, вставкою)
ExecuteNonQuery
Цей метод ExecuteNonQuery буде використовуватися лише для вставки, оновлення та видалення, створення та SET операторів. Метод ExecuteNonQuery поверне кількість рядків, виконаних операціями INSERT, DELETE або UPDATE.
ExecuteScalar
Отримати окремі значення з бази даних дуже швидко. Виконати Scalar поверне однорядкове значення одного стовпця, тобто єдине значення, для виконання SQL Query або Stored procedure, використовуючи командний об'єкт. ExecuteReader
Execute Reader буде використовуватися для повернення набору рядків при виконанні SQL Query або Stored procedure за допомогою командного об'єкта. Цей файл - це лише вилучення записів у прямому напрямку і використовується для зчитування значень таблиці від першого до останнього.
Метод ExecuteNonQuery поверне кількість рядків, виконаних операціями INSERT, DELETE або UPDATE. Цей метод ExecuteNonQuery буде використовуватися лише для вставки, оновлення та видалення, створення та SET операторів. (Детальніше)
ExecuteScalar поверне однорядкове значення одного стовпця, тобто єдине значення, при виконанні SQL Query або Stored procedure, використовуючи командний об'єкт. Отримати окремі значення з бази даних дуже швидко. (Детальніше)
ExecuteReader буде використовуватися для повернення набору рядків при виконанні SQL Query або Stored procedure за допомогою командного об'єкта. Цей файл - це лише вилучення записів у прямому напрямку, і він використовується для зчитування значень таблиці від першого до останнього. (Детальніше)
ExecuteNonQuery: зазвичай використовується, коли з операторів Sql нічого не повернено, наприклад операції вставлення, оновлення та видалення.
cmd.ExcecuteNonQuery();
ExecuteScalar:
Він буде використовуватися, коли Sql-запит повертає одне значення.
Int b = cmd.ExcecuteScalar();
ExecuteReader
Він буде використовуватися, коли запит Sql або Збережена процедура повертає кілька рядків / стовпців
SqlDataReader dr = cmd.ExecuteReader();
Для отримання додаткової інформації ви можете натиснути тут http://www.dotnetqueries.com/Article/148/-difference-between-executescalar-executereader-executenonquery