Подтвердить что ты не робот

Когда использовать ExecuteScalar, ExecuteReader, ExecuteNonQuery?

Я запутался в использовании

  • Элемент списка
  • ExecuteScalar,
  • ExecuteReader,
  • ExecuteNonQuery

Когда использовать эти методы?

4b9b3361

Ответ 1

ExecuteScalar() возвращает только значение из первого столбца первой строки вашего запроса.
ExecuteReader() возвращает объект, который может выполнять итерацию по всему набору результатов, одновременно сохраняя только одну запись в памяти.
ExecuteNonQuery() не возвращает данные вообще: только количество строк, затронутых вставкой, обновлением или удалением.

Кроме того, вы можете посмотреть тип DbDataAdapter, который включает метод Fill(), который позволяет загружать весь набор результатов в DataTable strong > или DataSet, а также ряд других способностей.

Наконец, вам кажется, что вам приятно познакомиться с MSDN. Это документация для: у вас есть имена методов. Ищите их.

Ответ 2

ExecuteScalar: для одиночного значения

 Int32 Value = Convert.ToInt32(ExecuteScalar("SELECT SUM(COLUMNNAME) FROM TABLE")); 
 Int32 Value = Convert.ToInt32(ExecuteScalar("SELECT AVG(COLUMNNAME) FROM TABLE")); 

ExecuteReader: чтение строки в прямом режиме

 IdataReader dr = ExecuteReader("SELECT * FROM TABLE"); 
 while(dr.Read())
 {
     //You will get rows values like this dr["ColumnName"]
 } 

ExecuteNonQuery: для вставки/удаления/обновления строк в таблице

ExecuteNonQuery("DELETE FROM TABLE");
ExecuteNonQuery("UPDATE TABLE SET COLUMNNAME = 'A'");

Ответ 3

В чем разница между ExecuteReader, ExecuteNonQuery и ExecuteScalar

ExecuteNonQuery

Метод ExecuteNonQuery возвращает количество строк, выполняемых с помощью INSERT, DELETE или UPDATE. Этот метод ExecuteNonQuery будет используется только для вставки, обновления и удаления, создания и установки заявления. (Подробнее об ExecuteNonQuery)

SqlCommand.ExecuteNonQuery Документация MSDN

ExecuteReader

Execute Reader будет использоваться для возврата набора строк, при выполнении SQL Query или хранимую процедуру с использованием объекта команды. Этот пересылать только поиск записей, и он используется для чтения таблицы значения от первого до последнего. (Подробнее об ExecuteReader)

Документация MSDN SqlCommand.ExecuteReader

Выполнение скалярного

Выполнение Scalar вернет однострочное значение одной строки, то есть одиночное значение, при выполнении SQL Query или хранимой процедуры с использованием команды объект. Это очень быстро, чтобы извлекать одиночные значения из базы данных. (Читать Подробнее о Execute Scalar)

SqlCommand.ExecuteScalar Документация MSDN

Ответ 4

Используйте ExecuteScalar, когда ваш запрос возвращает одно значение. Если он возвращает больше результатов, конечным результатом является первый столбец первой строки. Примером может быть SELECT Count(*) from MyTable

Используйте ExecuteReader для получения набора результатов с несколькими строками/столбцами (например, SELECT col1, col2 from MyTable.

Используйте ExecuteNonQuery для операторов SQL, которые не будут извлекать результаты из базы данных, но делать обновления в существующей базе данных (например, UPDATE, INSERT, и т.д.).

Ответ 5

По сути, это упрощено, но вы можете найти каждый из терминов SQL или .net или прочитать о ADO.net в MSDN для получения дополнительной информации.

ExecuteScalar при вызове скалярной функции SQL, которая возвращает только один номер.

ExecuteReader, когда вы делаете вызов SQL, который будет возвращать набор записей из таблицы, который дает объект SqlDataReader для извлечения данных на С#.

ExecuteNonQuery используется, когда нет никакого возвращаемого значения любого вида, ожидаемого от SQL-сервера, примером которого является простой оператор UPDATE.