Freigeben über


Abrufen eines einzelnen Werts aus einer Datenbank

Es kann vorkommen, dass Sie lediglich einzelne Werte anstelle von Tabellen oder Datenstreams aus einer Datenbank zurückgeben möchten. Angenommen, Sie möchten das Ergebnis einer Aggregatfunktion wie COUNT(*), SUM(Price) oder AVG(Quantity) zurückgeben. Das Command-Objekt bietet mit der ExecuteScalar-Methode die Möglichkeit, Einzelwerte zurückzugeben. Die ExecuteScalar-Methode gibt den Wert in der ersten Spalte der ersten Zeile des Resultsets als Skalarwert zurück.

Im folgenden Codebeispiel wird mit einem SqlCommand ein neuer Wert in der Datenbank eingefügt. Mit der ExecuteScalar-Methode wird der Wert der Identitätsspalte für den eingefügten Datensatz zurückgegeben.

public static int AddProductCategory(string newName, string connString)
{
    var newProdID = 0;
    const string sql =
        "INSERT INTO Production.ProductCategory (Name) VALUES (@Name); "
        + "SELECT CAST(scope_identity() AS int)";
    using (SqlConnection conn = new(connString))
    {
        SqlCommand cmd = new(sql, conn);
        cmd.Parameters.Add("@Name", SqlDbType.VarChar);
        cmd.Parameters["@name"].Value = newName;
        try
        {
            conn.Open();
            newProdID = (int)cmd.ExecuteScalar();
        }
        catch (Exception ex)
        {
            Console.WriteLine(ex.Message);
        }
    }
    return 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

Weitere Informationen: