SqlCommand.ExecuteScalar SqlCommand.ExecuteScalar SqlCommand.ExecuteScalar SqlCommand.ExecuteScalar Method

Definición

Ejecuta la consulta y devuelve la primera columna de la primera fila del conjunto de resultados devuelto por la consulta.Executes the query, and returns the first column of the first row in the result set returned by the query. Las demás columnas o filas no se tienen en cuenta.Additional columns or rows are ignored.

public:
 virtual System::Object ^ ExecuteScalar();
public object ExecuteScalar ();
abstract member ExecuteScalar : unit -> obj
override this.ExecuteScalar : unit -> obj
Public Function ExecuteScalar () As Object

Devoluciones

La primera columna de la primera fila es el conjunto resultante, o una referencia null (Nothing en Visual Basic) si el conjunto resultante está vacío.The first column of the first row in the result set, or a null reference (Nothing in Visual Basic) if the result set is empty. Devuelve un máximo de 2033 caracteres.Returns a maximum of 2033 characters.

Implementaciones

Excepciones

Un valor SqlDbType distinto a Binary o VarBinary se usó cuando Value se estableció en Stream.A SqlDbType other than Binary or VarBinary was used when Value was set to Stream. Para obtener más información sobre el streaming, vea Compatibilidad de transmisión de datos de SqlClient.For more information about streaming, see SqlClient Streaming Support.

O bien-or-

Un valor SqlDbType distinto a Char, NChar, NVarChar, VarChar o Xml se usó cuando Value se estableció en TextReader.A SqlDbType other than Char, NChar, NVarChar, VarChar, or Xml was used when Value was set to TextReader.

O bien-or-

Se usó un SqlDbType distinto de Xml cuando Value se estableció en XmlReader.A SqlDbType other than Xml was used when Value was set to XmlReader.

Se produjo una excepción al ejecutar el comando contra una fila bloqueada.An exception occurred while executing the command against a locked row. Esta excepción no se genera cuando se usa Microsoft .NET Framework versión 1.0.This exception is not generated when you are using Microsoft .NET Framework version 1.0.

O bien-or-

Se agotó el tiempo de espera durante una operación de streaming.A timeout occurred during a streaming operation. Para obtener más información sobre el streaming, vea Compatibilidad de transmisión de datos de SqlClient.For more information about streaming, see SqlClient Streaming Support.

La SqlConnection se cerró o se interrumpió durante una operación de streaming.The SqlConnection closed or dropped during a streaming operation. Para obtener más información sobre el streaming, vea Compatibilidad de transmisión de datos de SqlClient.For more information about streaming, see SqlClient Streaming Support.

Se produjo un error en un objeto Stream, XmlReader o TextReader durante una operación de streaming.An error occurred in a Stream, XmlReader or TextReader object during a streaming operation. Para obtener más información sobre el streaming, vea Compatibilidad de transmisión de datos de SqlClient.For more information about streaming, see SqlClient Streaming Support.

El objeto Stream, XmlReader o TextReader se cerró durante una operación de streaming.The Stream, XmlReader or TextReader object was closed during a streaming operation. Para obtener más información sobre el streaming, vea Compatibilidad de transmisión de datos de SqlClient.For more information about streaming, see SqlClient Streaming Support.

Ejemplos

En el ejemplo siguiente se SqlCommand crea un y, a continuación ExecuteScalar, se ejecuta con.The following example creates a SqlCommand and then executes it using ExecuteScalar. En el ejemplo se pasa una cadena que representa un nuevo valor que se va a insertar en una tabla y una cadena que se va a utilizar para conectarse al origen de datos.The example is passed a string representing a new value to be inserted into a table, and a string to use to connect to the data source. La función devuelve el nuevo valor de la columna de identidad si se insertó una nueva fila, 0 en caso de error.The function returns the new Identity column value if a new row was inserted, 0 on failure.

static public int AddProductCategory(string newName, string connString)
{
    Int32 newProdID = 0;
    string sql =
        "INSERT INTO Production.ProductCategory (Name) VALUES (@Name); "
        + "SELECT CAST(scope_identity() AS int)";
    using (SqlConnection conn = new SqlConnection(connString))
    {
        SqlCommand cmd = new SqlCommand(sql, conn);
        cmd.Parameters.Add("@Name", SqlDbType.VarChar);
        cmd.Parameters["@name"].Value = newName;
        try
        {
            conn.Open();
            newProdID = (Int32)cmd.ExecuteScalar();
        }
        catch (Exception ex)
        {
            Console.WriteLine(ex.Message);
        }
    }
    return (int)newProdID;
}
Public Function AddProductCategory( _
  ByVal newName As String, ByVal connString As String) As Integer
    Dim newProdID As Int32 = 0
    Dim sql As String = _
     "INSERT INTO Production.ProductCategory (Name) VALUES (@Name); " _
       & "SELECT CAST(scope_identity() AS int);"

    Using conn As New SqlConnection(connString)
        Dim cmd As New SqlCommand(sql, conn)
        cmd.Parameters.Add("@Name", SqlDbType.VarChar)
        cmd.Parameters("@Name").Value = newName
        Try
            conn.Open()
            newProdID = Convert.ToInt32(cmd.ExecuteScalar())
        Catch ex As Exception
            Console.WriteLine(ex.Message)
        End Try
    End Using

    Return newProdID
End Function

Comentarios

Use el ExecuteScalar método para recuperar un valor único (por ejemplo, un valor agregado) de una base de datos.Use the ExecuteScalar method to retrieve a single value (for example, an aggregate value) from a database. Esto requiere menos código que el uso ExecuteReader del método y, a continuación, realizar las operaciones necesarias para generar el valor único utilizando los datos devueltos SqlDataReaderpor.This requires less code than using the ExecuteReader method, and then performing the operations that you need to generate the single value using the data returned by a SqlDataReader.

Se puede ExecuteScalar dar formato A una consulta típica como en C# el ejemplo siguiente:A typical ExecuteScalar query can be formatted as in the following C# example:

cmd.CommandText = "SELECT COUNT(*) FROM dbo.region";  
Int32 count = (Int32) cmd.ExecuteScalar();  

Se aplica a

Consulte también: