C# ve SQL Database Bağlantısı 2.Yöntem
C# ve SQL Database Bağlantısı 2.Yöntem

C# ve SQL Database Bağlantısı 2.Yöntem olarak SqlDataReader ve DataTable kullanımı mevcut. Birinci yöntem ile benzer bir yöntem. Burada farklı olarak dönen veriyi RAM’e yüklüyoruz.

C# ve SQL Database Bağlantısı 1.Yöntemi anlattığım blog yazıma buradan ulaşabilirsiniz.

Daha sonra veri tabanı bağlantısına gerek kalmadan veriyi okuyabiliyoruz. Buna ADO.NET (ActiveX Data Objects) de deniliyor. Temelde aktif veri tabanı nesneleri (tablolar vb.) üzerinde çeşitli işlemler yapmamıza, veri çekme, silme, değiştirme vb. işlemlere izin veren ve veri tabanının C# dili ile haberleşmesine imkan tanır.

using System;
using System.Data;
using System.Data.SqlClient;

class Program
{
    static void Main()
    {
        SqlConnection connection = new SqlConnection("Data Source=MyServerName;Initial Catalog=MyDatabase;Integrated Security=True");
        SqlDataAdapter adapter = new SqlDataAdapter("SELECT * FROM Table_Product", connection);
        
        DataTable table = new DataTable();
        adapter.Fill(table);

        foreach (DataRow row in table.Rows)
        {
            Console.WriteLine(reader["ProductName"]);
        }
    }
}

Bu yöntem ile veriyi Filtreleyebilir, sıralayabilir, değişiklik yapabilir ve hatta veriyi güncelleyebilirsin.
Her yöne dolaşabilirsin.

KodNe yapıyor?Neden kullanıyoruz?
SqlConnection connection = new SqlConnection("connection_string");Bağlantı nesnesi oluşturur.Veritabanına ulaşmak için.
connection.Open();SQL Server ile fiziksel bağlantı kurulur.Database bağlantısı için.
SqlDataAdapter adapter = new SqlDataAdapter("SELECT * FROM Table_Product", connection);Bu satırda arka planda otomatik bir SqlCommand oluşturulur.SQL sorgusunu alır ve veritabanına gönderir.
DataTable table = new DataTable();Hafızada geçici olarak tablo yapısı tutmak için kullanılır.Tüm veriler RAM’de rahatça kullanılacak.
adapter.Fill(table);Sorgudan dönen tüm kayıtlar DataTable nesnesine yüklenir.Artık bağlantıya gerek kalmadan verilerle çalışabiliriz.
foreach (DataRow row in table.Rows)table.Rows içindeki her satırda gezilir ve ProductName kolonu alınır.Satır satır veri kullanımı.
row["ProductName"]Belirli kolondaki değeri okur.İstediğin veriye erişim sağlar.

1.Yöntem ile 2.Yöntem Arasındaki Fark:

İşlev1. Yöntem
(SqlDataReader)
2. Yöntem
(SqlDataAdapter + DataTable)
Okuma ŞekliSadece ileriye doğru satır satır okur.Tüm verileri RAM’e çeker. Her satır ve sütuna istediğin gibi erişebilirsin.
Bellek KullanımıDüşük. Sadece anlık satır belleğe alınır.Daha yüksek. Tüm veri belleğe yüklenir.
HızBüyük veri setlerinde daha hızlı çünkü sadece okur.Küçük ve orta ölçekli veri için uygun.
Filtreleme / SıralamaSQL içinde yaparsan hızlı olur. Reader içinde direkt filtreleme yok, kendin kodla yapman gerekir.DataTable içinde LINQ veya filtreleme metodları ile rahatlıkla yapılır.
Bağlantı Durumureader.Read() çalıştığı sürece bağlantı açık kalmak zorunda.adapter.Fill() çalıştıktan sonra bağlantı kapanabilir. DataTable üzerinden bağlantısız işlem yapılabilir.
Veri Üzerinde DeğişiklikReader salt okunur. Üzerinden veri güncellemek zordur, mümkün değildir.DataTable üzerinde veri değiştirilebilir, sonra tekrar DB’ye yansıtılabilir (ama SqlCommandBuilder veya elle update gerektirir).

Özetle:

1. yöntem ➔ Hafif ve hızlıdır, sadece oku ve geç için idealdir.
2. yöntem ➔ Verileri çekip hafızaya atmak, sonra rahat rahat kullanmak için idealdir.

C# ve SQL Database Bağlantısı 2.Yöntem ile bu şekilde yapılıyor. Bu içerik benim için sürekli referans olacak ve elimden geldiğince güncellemeye çalışacağım. İçeriğe katkı sağlamak isterseniz, yorum yazmaktan çekinmeyiniz.

Gönderilere yorum yazabilir, linkedin veya @huseyineskan instagram hesabımdan benimle iletişime geçebilirsiniz.

Yazılım kategorisine buradan göz atabilirsiniz.