Aracılığıyla paylaş


Veritabanından Tek Bir Değer Alma

Tablo veya veri akışı yerine yalnızca tek bir değer olan veritabanı bilgilerini döndürmeniz gerekebilir. Örneğin COUNT(*), SUM(Price) veya AVG(Quantity) gibi bir toplama işlevinin sonucunu döndürmek isteyebilirsiniz. Command nesnesi ExecuteScalar yöntemini kullanarak tek değerler döndürme özelliği sağlar. ExecuteScalar yöntemi, skaler değer olarak sonuç kümesinin ilk satırının ilk sütununun değerini döndürür.

Aşağıdaki kod örneği, bir SqlCommand kullanarak veritabanına yeni bir değer ekler. ExecuteScalar yöntemi, eklenen kaydın kimlik sütun değerini döndürmek için kullanılır.

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

Ayrıca bakınız