Leer en inglés

Compartir a través de


SqlCommand.ExecuteScalar Método

Definición

Ejecuta la consulta y devuelve la primera columna de la primera fila del conjunto de resultados devueltos por la consulta. Las demás columnas o filas no se tienen en cuenta.

public override object ExecuteScalar();
public object ExecuteScalar();

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. Devuelve un máximo de 2033 caracteres.

Implementaciones

Excepciones

Se usó un SqlDbType valor distinto de Binary o VarBinary cuando Value se estableció Streamen . Para obtener más información sobre el streaming, vea Compatibilidad de transmisión de datos de SqlClient.

o bien

Se usó un SqlDbType valor distinto de Char, NChar, NVarChar, VarChar o Xml cuando Value se estableció TextReaderen .

o bien

Se usó un SqlDbType valor distinto de Xml cuando Value se estableció XmlReaderen .

Se produjo una excepción al ejecutar el comando contra una fila bloqueada. Esta excepción no se genera cuando se usa Microsoft .NET Framework versión 1.0.

o bien

Se agotó el tiempo de espera durante una operación de streaming. Para obtener más información sobre el streaming, vea Compatibilidad de transmisión de datos de SqlClient.

La SqlConnection se cerró o se interrumpió durante una operación de streaming. Para obtener más información sobre el streaming, vea Compatibilidad de transmisión de datos de SqlClient.

Se produjo un error en un objeto Stream, XmlReader o TextReader durante una operación de streaming. Para obtener más información sobre el streaming, vea Compatibilidad de transmisión de datos de SqlClient.

El objeto Stream, XmlReader o TextReader se cerró durante una operación de streaming. Para obtener más información sobre el streaming, vea Compatibilidad de transmisión de datos de SqlClient.

Ejemplos

En el ejemplo siguiente se crea y SqlCommand , a continuación, se ejecuta mediante ExecuteScalar. 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 usar para conectarse al origen de datos. La función devuelve el nuevo valor de columna Identity si se insertó una nueva fila, 0 en caso de error.

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;
}

Comentarios

Use el ExecuteScalar método para recuperar un valor único (por ejemplo, un valor agregado) de una base de datos. Esto requiere menos código que usar el ExecuteReader método y, a continuación, realizar las operaciones que necesita para generar el valor único mediante los datos devueltos por .SqlDataReader

Se puede dar formato a una consulta típica ExecuteScalar como en el siguiente ejemplo de C#:

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

Se aplica a

Producto Versiones
.NET Core 1.0, Core 1.1, 6 (package-provided), 7 (package-provided), 8 (package-provided), 9 (package-provided), 10 (package-provided)
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 2.0 (package-provided)

Consulte también