SqlCommand.ExecuteScalar Methode

Definition

Führt die Abfrage aus und gibt die erste Spalte der ersten Zeile im Resultset zurück, die von der Abfrage zurückgegeben wird. Zusätzliche Spalten oder Zeilen werden ignoriert.

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

Gibt zurück

Die erste Spalte der ersten Zeile im Resultset oder ein Nullverweis (Nothing in Visual Basic), wenn das Resultset leer ist. Gibt maximal 2033 Zeichen zurück.

Implementiert

Ausnahmen

Eine SqlDbType andere als Binary oder VarBinary wurde verwendet, als Value auf Stream. Weitere Informationen zum Streaming finden Sie unter SqlClient Streaming Support.

-oder-

Eine SqlDbType andere als Char, NChar, NVarChar, VarChar oder Xml wurde verwendet, als Value festgelegt TextReaderwurde.

-oder-

Eine SqlDbType andere als XML wurde verwendet, als Value auf XmlReader".

Ausnahme beim Ausführen des Befehls für eine gesperrte Zeile. Diese Ausnahme wird nicht generiert, wenn Sie Microsoft .NET Framework, Version 1.0 verwenden.

-oder-

Während eines Streamingvorgangs ist ein Timeout aufgetreten. Weitere Informationen zum Streaming finden Sie unter SqlClient Streaming Support.

Das SqlConnection Schließen oder Ablegen während eines Streamingvorgangs. Weitere Informationen zum Streaming finden Sie unter SqlClient Streaming Support.

Fehler in einem StreamOder XmlReaderTextReader Objekt während eines Streamingvorgangs. Weitere Informationen zum Streaming finden Sie unter SqlClient Streaming Support.

Das StreamObjekt XmlReader wurde TextReader während eines Streamingvorgangs geschlossen. Weitere Informationen zum Streaming finden Sie unter SqlClient Streaming Support.

Beispiele

Im folgenden Beispiel wird ein SqlCommand Und dann mithilfe ExecuteScalarvon . Das Beispiel wird eine Zeichenfolge übergeben, die einen neuen Wert darstellt, der in eine Tabelle eingefügt werden soll, und eine Zeichenfolge, die zum Herstellen einer Verbindung mit der Datenquelle verwendet werden soll. Die Funktion gibt den neuen Wert der Identitätsspalte zurück, wenn eine neue Zeile eingefügt wurde, 0 bei Einem Fehler.

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

Hinweise

Verwenden Sie die ExecuteScalar Methode, um einen einzelnen Wert (z. B. einen Aggregatwert) aus einer Datenbank abzurufen. Dies erfordert weniger Code als die Verwendung der ExecuteReader Methode, und führen Sie dann die Vorgänge aus, die Sie zum Generieren des einzelnen Werts mithilfe der von einem SqlDataReader.

Eine typische ExecuteScalar Abfrage kann wie im folgenden C#-Beispiel formatiert werden:

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

Gilt für:

Weitere Informationen