Поделиться через


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();

Применяется к