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 System::Object ^ ExecuteScalar();
public:
 virtual System::Object ^ ExecuteScalar();
public override object ExecuteScalar ();
public object ExecuteScalar ();
override this.ExecuteScalar : unit -> obj
abstract member ExecuteScalar : unit -> obj
override this.ExecuteScalar : unit -> obj
Public Overrides Function ExecuteScalar () As Object
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. 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;
}
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. 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

Consulte también