Partager via


Obtention d'une valeur unique à partir d'une base de données (ADO.NET)

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 Command fournit la fonctionnalité 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 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;
}

Voir aussi

Concepts

Exécution d'une commande (ADO.NET)

DbConnection, DbCommand et DbException (ADO.NET)

Autres ressources

Commandes et paramètres (ADO.NET)