SqlCommand.ExecuteScalar Метод
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Выполняет запрос и возвращает первый столбец первой строки в результирующий набор, возвращенный запросом. Такие же дополнительные столбцы также определены.
public:
override System::Object ^ ExecuteScalar();
public override object ExecuteScalar ();
override this.ExecuteScalar : unit -> obj
Public Overrides Function ExecuteScalar () As Object
Возвращаемое значение
Первый столбец первой строки в результирующем наборе или пустая ссылка ( Nothing
в Visual Basic), если результирующий набор пуст. Возвращает не более 2033 символов.
Исключения
Объект , отличный SqlDbType от Binary или VarBinary , использовался, если Value для параметра задано значение Stream . Дополнительные сведения о потоковой передаче см. в разделе Поддержка потоковой передачи SqlClient.
-или-
Значение , отличное SqlDbType от Char, NChar, NVarChar, VarChar или Xml , использовалось, если Value для параметра задано значение TextReader .
-или-
Объект , отличный SqlDbType от XML , использовался, если Value для параметра задано значение XmlReader .
Возникло исключение при выполнении команды в заблокированной строке. Это исключение не создается при использовании платформы Microsoft .NET Framework версии 1.0.
-или-
Во время операции потоковой передачи истекло время ожидания. Дополнительные сведения о потоковой передаче см. в разделе Поддержка потоковой передачи SqlClient.
Подключение SqlConnection, закрытое или удаленное во время операции потоковой передачи. Дополнительные сведения о потоковой передаче см. в разделе Поддержка потоковой передачи SqlClient.
Произошла ошибка в объекте Stream или XmlReaderTextReader во время операции потоковой передачи. Дополнительные сведения о потоковой передаче см. в разделе Поддержка потоковой передачи SqlClient.
Объект Stream , XmlReader или TextReader был закрыт во время операции потоковой передачи. Дополнительные сведения о потоковой передаче см. в разделе Поддержка потоковой передачи SqlClient.
Примеры
В следующем примере создается SqlCommand , а затем выполняется с помощью ExecuteScalar. В этом примере передается строка, представляющая новое значение для вставки в таблицу, и строка, используемая для подключения к источнику данных. Функция возвращает новое значение столбца Identity , если была вставлена новая строка, 0 при сбое.
using System;
using System.Data;
using Microsoft.Data.SqlClient;
public class Sample
{
public void CreateSqlCommand(
string queryString, SqlConnection connection)
{
SqlCommand command = new
SqlCommand(queryString, connection);
command.Connection.Open();
command.ExecuteScalar();
connection.Close();
}
Комментарии
Используйте метод для ExecuteScalar получения одного значения (например, статистического) из базы данных. Для этого требуется меньше кода, чем при использовании ExecuteReader метода , а затем выполнять операции, необходимые для создания одного значения с использованием данных, возвращаемых SqlDataReader.
Типичный ExecuteScalar запрос можно отформатировать, как показано в следующем примере C#:
cmd.CommandText = "SELECT COUNT(*) FROM dbo.region";
Int32 count = (Int32) cmd.ExecuteScalar();