Obtention d'une valeur unique à partir d'une base de données

Vous aurez peut-être besoin de retourner des informations de base de données qui sont simplement une valeur unique plutôt qu'une table ou un flux de données. Par exemple, vous souhaitez éventuellement retourner le résultat d'une fonction d'agrégation telle que COUNT(*), SUM(Price) ou AVG(Quantity). L'objet Commande fournit la capacité permettant de retourner des valeurs uniques à l'aide de la méthode ExecuteScalar. La méthode ExecuteScalar retourne sous forme de valeur scalaire la valeur de la première colonne de la première ligne du jeu de résultats.

L'exemple de code suivant insère une nouvelle valeur dans la base de données en utilisant un objet SqlCommand. La méthode ExecuteScalar est utilisée pour retourner la valeur de la colonne d'identité de l'enregistrement inséré.

public static int AddProductCategory(string newName, string connString)
{
    var newProdID = 0;
    const string sql =
        "INSERT INTO Production.ProductCategory (Name) VALUES (@Name); "
        + "SELECT CAST(scope_identity() AS int)";
    using (SqlConnection conn = new(connString))
    {
        SqlCommand cmd = new(sql, conn);
        cmd.Parameters.Add("@Name", SqlDbType.VarChar);
        cmd.Parameters["@name"].Value = newName;
        try
        {
            conn.Open();
            newProdID = (int)cmd.ExecuteScalar();
        }
        catch (Exception ex)
        {
            Console.WriteLine(ex.Message);
        }
    }
    return 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

Voir aussi