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)