Obtener un valor único de una base de datosObtaining a Single Value from a Database

En ocasiones se debe devolver información de bases de datos consistente en un único valor, en lugar de una tabla o un flujo de datos.You may need to return database information that is simply a single value rather than in the form of a table or data stream. Por ejemplo, puede que desee devolver el resultado de una función de agregado como Count (*), SUM (Price) o AVG (quantity).For example, you may want to return the result of an aggregate function such as COUNT(*), SUM(Price), or AVG(Quantity). El objeto Command proporciona la capacidad de devolver valores únicos mediante el método ExecuteScalar .The Command object provides the capability to return single values using the ExecuteScalar method. El método ExecuteScalar devuelve, como un valor escalar, el valor de la primera columna de la primera fila del conjunto de resultados.The ExecuteScalar method returns, as a scalar value, the value of the first column of the first row of the result set.

El ejemplo de código siguiente inserta un valor nuevo en la base de datos utilizando SqlCommand.The following code example inserts a new value in the database using a SqlCommand. El método ExecuteScalar se utiliza para devolver el valor de columna de identidad para el registro insertado.The ExecuteScalar method is used to return the identity column value for the inserted record.

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

Vea tambiénSee also