SqlCommand.ExecuteScalar Méthode
Définition
Important
Certaines informations portent sur la préversion du produit qui est susceptible d’être en grande partie modifiée avant sa publication. Microsoft exclut toute garantie, expresse ou implicite, concernant les informations fournies ici.
Exécute la requête et retourne la première colonne de la première ligne du jeu de résultats retourné par la requête. Des colonnes ou des lignes supplémentaires sont ignorées.
public:
virtual System::Object ^ ExecuteScalar();
public:
override System::Object ^ ExecuteScalar();
public object ExecuteScalar();
public override object ExecuteScalar();
abstract member ExecuteScalar : unit -> obj
override this.ExecuteScalar : unit -> obj
override this.ExecuteScalar : unit -> obj
Public Function ExecuteScalar () As Object
Public Overrides Function ExecuteScalar () As Object
Retours
La première colonne de la première ligne du jeu de résultats ou une référence Null (Nothing dans Visual Basic) si le jeu de résultats est vide. Retourne un maximum de 2033 caractères.
Implémente
Exceptions
Un SqlDbType autre que Binary ou VarBinary a été utilisé quand Value il a été défini sur Stream. Pour plus d’informations sur la diffusion en continu, consultez Prise en charge de la diffusion en continu SqlClient.
-ou-
Un SqlDbType autre que Char, NChar, NVarChar, VarChar ou Xml a été utilisé quand Value il a été défini sur TextReader.
-ou-
Un SqlDbType autre que Xml a été utilisé lorsqu’il Value a été défini sur XmlReader.
Une exception s’est produite lors de l’exécution de la commande sur une ligne verrouillée. Cette exception n’est pas générée lorsque vous utilisez Microsoft .NET Framework version 1.0.
-ou-
Un délai d’expiration s’est produit pendant une opération de diffusion en continu. Pour plus d’informations sur la diffusion en continu, consultez Prise en charge de la diffusion en continu SqlClient.
SqlConnection Fermé ou supprimé pendant une opération de diffusion en continu. Pour plus d’informations sur la diffusion en continu, consultez Prise en charge de la diffusion en continu SqlClient.
Une erreur s’est produite dans un objet ou StreamXmlReader un TextReaderobjet pendant une opération de diffusion en continu. Pour plus d’informations sur la diffusion en continu, consultez Prise en charge de la diffusion en continu SqlClient.
L’objet ou Stream l’objet XmlReaderTextReader a été fermé pendant une opération de diffusion en continu. Pour plus d’informations sur la diffusion en continu, consultez Prise en charge de la diffusion en continu SqlClient.
Exemples
L’exemple suivant crée un SqlCommand élément, puis l’exécute à l’aide ExecuteScalarde . L’exemple est passé une chaîne représentant une nouvelle valeur à insérer dans une table et une chaîne à utiliser pour se connecter à la source de données. La fonction retourne la nouvelle valeur de colonne Identity si une nouvelle ligne a été insérée, 0 en cas d’échec.
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
Remarques
Utilisez la ExecuteScalar méthode pour récupérer une valeur unique (par exemple, une valeur d’agrégation) à partir d’une base de données. Cela nécessite moins de code que d’utiliser la ExecuteReader méthode, puis d’effectuer les opérations dont vous avez besoin pour générer la valeur unique à l’aide des données retournées par un SqlDataReader.
Une requête classique ExecuteScalar peut être mise en forme comme dans l’exemple C# suivant :
cmd.CommandText = "SELECT COUNT(*) FROM dbo.region";
Int32 count = (Int32) cmd.ExecuteScalar();