SqlCommand.ExecuteScalar Méthode

Définition

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.Executes the query, and returns the first column of the first row in the result set returned by the query. Les colonnes ou lignes supplémentaires sont ignorées.Additional columns or rows are ignored.

public:
 virtual System::Object ^ ExecuteScalar();
public object ExecuteScalar ();
abstract member ExecuteScalar : unit -> obj
override this.ExecuteScalar : unit -> obj
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.The first column of the first row in the result set, or a null reference (Nothing in Visual Basic) if the result set is empty. Retourne un maximum de 2 033 caractères.Returns a maximum of 2033 characters.

Implémente

Exceptions

Un SqlDbType autre que Binary ou VarBinary a été utilisé quand Value avait la valeur Stream.A SqlDbType other than Binary or VarBinary was used when Value was set to Stream. Pour plus d’informations sur le streaming, consultez Prise en charge du streaming pour SqlClient.For more information about streaming, see SqlClient Streaming Support.

- ou --or-

Un SqlDbType autre que Char, NChar, NVarChar, VarChar ou Xml a été utilisé quand Value avait la valeur TextReader.A SqlDbType other than Char, NChar, NVarChar, VarChar, or Xml was used when Value was set to TextReader.

- ou --or-

Un SqlDbType autre que Xml a été utilisé quand Value avait la valeur XmlReader.A SqlDbType other than Xml was used when Value was set to XmlReader.

Une exception s’est produite pendant l’exécution de la commande sur une ligne verrouillée.An exception occurred while executing the command against a locked row. Cette exception n’est pas générée quand vous utilisez Microsoft .NET Framework version 1.0.This exception is not generated when you are using Microsoft .NET Framework version 1.0.

- ou --or-

Un délai d’attente a été dépassé pendant une opération de diffusion en continu.A timeout occurred during a streaming operation. Pour plus d’informations sur le streaming, consultez Prise en charge du streaming pour SqlClient.For more information about streaming, see SqlClient Streaming Support.

La SqlConnection a été fermée ou supprimée pendant une opération de diffusion en continu.The SqlConnection closed or dropped during a streaming operation. Pour plus d’informations sur le streaming, consultez Prise en charge du streaming pour SqlClient.For more information about streaming, see SqlClient Streaming Support.

Une erreur s’est produite dans un objet Stream, XmlReader ou TextReader pendant une opération de diffusion en continu.An error occurred in a Stream, XmlReader or TextReader object during a streaming operation. Pour plus d’informations sur le streaming, consultez Prise en charge du streaming pour SqlClient.For more information about streaming, see SqlClient Streaming Support.

L’objet Stream, XmlReader ou TextReader a été fermé pendant une opération de diffusion en continu.The Stream, XmlReader or TextReader object was closed during a streaming operation. Pour plus d’informations sur le streaming, consultez Prise en charge du streaming pour SqlClient.For more information about streaming, see SqlClient Streaming Support.

Exemples

L’exemple suivant crée un SqlCommand, puis l’exécute à l’aide de ExecuteScalar.The following example creates a SqlCommand and then executes it using ExecuteScalar. L’exemple reçoit 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.The example is passed a string representing a new value to be inserted into a table, and a string to use to connect to the data source. La fonction retourne la nouvelle valeur de la colonne d' identité si une nouvelle ligne a été insérée, 0 en cas d’échec.The function returns the new Identity column value if a new row was inserted, 0 on failure.

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 méthode ExecuteScalar pour récupérer une valeur unique (par exemple, une valeur agrégée) à partir d’une base de données.Use the ExecuteScalar method to retrieve a single value (for example, an aggregate value) from a database. Cela nécessite moins de code que l’utilisation de la méthode ExecuteReader, 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 une SqlDataReader.This requires less code than using the ExecuteReader method, and then performing the operations that you need to generate the single value using the data returned by a SqlDataReader.

Une requête ExecuteScalar classique peut être mise en forme comme dans C# l’exemple suivant :A typical ExecuteScalar query can be formatted as in the following C# example:

cmd.CommandText = "SELECT COUNT(*) FROM dbo.region";  
Int32 count = (Int32) cmd.ExecuteScalar();  

S’applique à

Voir aussi