Compartir a través de


Obtener un único valor de una base de datos (ADO.NET)

Actualización: November 2007

En ocasiones se debe devolver información de bases de datos consistente en un único valor, en lugar de una tabla o una secuencia de datos. Por ejemplo, puede que desee devolver el resultado de una función de agregada como COUNT(*), SUM(Price) o AVG(Quantity). El objeto Command permite devolver valores únicos mediante el método ExecuteScalar. El método ExecuteScalar devuelve como valor escalar el valor correspondiente a la primera columna de la primera fila del conjunto de resultados.

El ejemplo de código siguiente inserta un valor nuevo en la base de datos utilizando SqlCommand. El método ExecuteScalar se utiliza para devolver el valor de columna de identidad para el registro insertado.

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

Vea también

Conceptos

Ejecutar un comando (ADO.NET)

DbConnection, DbCommand y DbException (ADO.NET)

Otros recursos

Comandos y parámetros (ADO.NET)