Freigeben über


SqlCommand.ExecuteScalar Methode

Definition

Führt die Abfrage aus und gibt die erste Spalte der ersten Zeile in dem von der Abfrage zurückgegebenen Resultset zurück. Weitere Spalten oder Zeilen werden ignoriert.

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

Gibt zurück

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

Implementiert

Ausnahmen

Es wurde ein anderer SqlDbType als Binary oder VarBinary verwendet, als Value auf Stream festgelegt wurde. Weitere Informationen zum Streaming finden Sie unter SqlClient Streaming Support (SqlClient-Streamingunterstützung).

- oder -

Ein SqlDbType anderes als Char, NChar, NVarChar, VarChar oder Xml wurde verwendet, wenn Value auf TextReaderfestgelegt wurde.

- oder -

Es wurde ein anderer SqlDbType als Xml verwendet, als Value auf XmlReader festgelegt wurde.

Beim Ausführen des Befehls für eine gesperrte Zeile ist eine Ausnahme aufgetreten. Diese Ausnahme tritt in Microsoft .NET Framework 1.0 nicht auf.

- oder -

Bei einem Streamingvorgang ist ein Timeout aufgetreten. Weitere Informationen zum Streaming finden Sie unter SqlClient Streaming Support (SqlClient-Streamingunterstützung).

Die SqlConnection wurde während eines Streamingvorgangs geschlossen oder getrennt. Weitere Informationen zum Streaming finden Sie unter SqlClient Streaming Support (SqlClient-Streamingunterstützung).

Während eines Streamingvorgangs ist bei einem Stream-, XmlReader- oder TextReader-Objekt ein Fehler aufgetreten. Weitere Informationen zum Streaming finden Sie unter SqlClient Streaming Support (SqlClient-Streamingunterstützung).

Das Stream-, XmlReader- oder TextReader-Objekt wurde während eines Streamingvorgangs geschlossen. Weitere Informationen zum Streaming finden Sie unter SqlClient Streaming Support (SqlClient-Streamingunterstützung).

Beispiele

Im folgenden Beispiel wird ein SqlCommand erstellt und dann mit ExecuteScalarausgeführt. Im 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 Identity-Spalte zurück, wenn eine neue Zeile eingefügt wurde, bei Fehler 0.

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ührt dann die Vorgänge aus, die Sie benötigen, um den einzelnen Wert mithilfe der von einem SqlDataReaderzurückgegebenen Daten zu generieren.

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