Partager via


SqlCommand.ExecuteScalar Méthode

Définition

Exécute la requête et retourne la première colonne de la première ligne dans le jeu de résultats retourné par la requête. Les colonnes ou lignes supplémentaires sont ignorées.

public:
 override System::Object ^ ExecuteScalar();
public:
 virtual System::Object ^ ExecuteScalar();
public override object ExecuteScalar ();
public object ExecuteScalar ();
override this.ExecuteScalar : unit -> obj
abstract member ExecuteScalar : unit -> obj
override this.ExecuteScalar : unit -> obj
Public Overrides Function ExecuteScalar () As Object
Public Function ExecuteScalar () As Object

Retours

Première colonne de la première ligne dans le jeu de résultats, ou une référence Null (Nothing en 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 avait la valeur Stream. Pour plus d’informations sur le streaming, consultez Prise en charge du streaming pour SqlClient.

- ou -

Autre SqlDbType que Char, NChar, NVarChar, VarChar ou Xml a été utilisé lorsque Value a été défini sur TextReader.

- ou -

Un SqlDbType autre que Xml a été utilisé quand Value avait la valeur XmlReader.

Une exception s’est produite pendant l’exécution de la commande sur une ligne verrouillée. Cette exception n’est pas générée quand vous utilisez Microsoft .NET Framework version 1.0.

- ou -

Un délai d’attente a été dépassé pendant une opération de diffusion en continu. Pour plus d’informations sur le streaming, consultez Prise en charge du streaming pour SqlClient.

La SqlConnection a été fermée ou supprimée pendant une opération de diffusion en continu. Pour plus d’informations sur le streaming, consultez Prise en charge du streaming pour SqlClient.

Une erreur s’est produite dans un objet Stream, XmlReader ou TextReader pendant une opération de diffusion en continu. Pour plus d’informations sur le streaming, consultez Prise en charge du streaming pour SqlClient.

L’objet Stream, XmlReader ou TextReader a été fermé pendant une opération de diffusion en continu. Pour plus d’informations sur le streaming, consultez Prise en charge du streaming pour SqlClient.

Exemples

L’exemple suivant crée un SqlCommand , puis l’exécute à l’aide de ExecuteScalar. L’exemple est transmis à 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 l’utilisation de la ExecuteReader méthode , puis l’exécution des 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();

S’applique à

Voir aussi