Získání jedné hodnoty z databáze

Je možné, že budete muset vrátit informace o databázi, která je jednoduše jedna hodnota, nikoli ve formě tabulky nebo datového proudu. Můžete například chtít vrátit výsledek agregační funkce, například COUNT(*), SUM(Price) nebo AVG(Quantity). Objekt Command poskytuje schopnost vracet jednotlivé hodnoty pomocí ExecuteScalar metoda. ExecuteScalar metoda vrátí jako skalární hodnotu hodnotu prvního sloupce prvního řádku sady výsledků.

Následující příklad kódu vloží novou hodnotu do databáze pomocí .SqlCommand Metoda ExecuteScalar se používá k vrácení hodnoty sloupce identity pro vložený záznam.

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

Viz také