-- ADO.NET, C#

ADO.NET(Connected) – Temel İşlemler

Bol miktarda veritabanı makale ve videosu hazırladığımı bilirsiniz. Ancak ADO.NET, LINQ, EF gibi ara katman işlemleri için sadece video hazırlamıştım. Bunu da EF ve LINQ ile gerçekleştirmiştim. Şimdi biraz parmaklarımı yorarak ADO.NET’in temellerini anlatmaya başlayacağım.

Veritabanı uygulaması geliştirmek için kullanılan ADO.NET isimli API, .NET ortamındaki herhangi bir dil ile ADO.NET mimarisinin desteklediği tüm veritabanlarında uygulama geliştirilebilmektedir. Bir nevi, uygulamadan aldığı komutları veritabanına anlatarak bunları gerçekleştirmesini sağlayan, sonrasında dönecek herhangi bir sonucu uygulamaya aktaracak bir aracı katmandır.

Bu mimaride karmaşık bir çok yapı bulunmasına rağmen biz temel olarak Connected mimari dediğimiz bağlantılı işlemleri inceleyeceğiz.

Bağlantılı işlemlerde her yapılan işlem için veritabanına açık bir bağlantı kurulmuş olması zorunludur. Bir veri çekmek ya da komut çalıştırmak için öncelikle açık bir veritabanı bağlantısı oluşturup, komut nesnesiyle bağlantıyı harmanlayıp veritabanına göndermek gerekir.

Bu işin teorik özetiydi. Mimari anlamda sayfalarca sürecek bir teori ve açıklamaya sahip bir konu olduğunu rahatlıkla söyleyebilirim.

Bir Windows Form projesi oluşturalım ve uygulamamızı geliştirmeye başlayalım.

Öncelikle, Form1 dosyamın kaynak kod kısmına geçiyorum.

Form1() yapıcı metodunun altındaki boşlukta yeni bir veritabanı bağlantı katarı oluşturacağım. Bu bağlantı katarı, oluşturacağımız tüm bağlantılara veritabanı bilgilerini tanıtacaktır. Bu nedenle mutlaka doğru bilgilere sahip olmalıdır.

// Sql Authentication ile bağlantı oluştur
SqlConnection conn = new SqlConnection("Server=.;Database=Northwind;Uid=dbUser; Pwd=12345");

// Windows Authentication ile bağlantı oluştur
SqlConnection wConn = new SqlConnection("Server=.; Database=Northwind; Trusted_Connection=True");

Bu iki yöntemden birini kullanmanız yeterli olacaktır. İkisi arasındaki önemli fark; SQL Authentication ile yetkilendirilen bağlantı uzak sunucularla da kullanılabilecek şekilde platform bağımsız tasarlanmıştır. Windows Authentication ile yetkilendirilen ise, veritabanı kullanıcı adı ve şifresine gerek duymadan, Windows yetkileriyle veritabanına bağlanabilmenizi sağlar. Profesyonel uygulamalarda SQL yetkilendirmesi kullanılır.

“Server…” ile başlayan kısma bağlantı katarı denir. Bu bilgilerin ne tür farklı şekillerde kullanılabileceğini öğrenmek için connectionstrings.com adresini ziyaret edebilirsiniz.

– Config Dosyasıyla Veritabanı Bağlantısı Oluşturma

Windows uygulaması geliştiriyorsanız App.Config, Web uygulaması geliştiriyorsanız Web.Config dosyaları içerisinde çeşitli ayarlar tanımlayarak uygulama içerisinde bunlara erişerek kullanabilir, yönetebiliriz.

Bir veritabanı bağlantı katarını Config dosyasında tutmak mantıklıdır. Merkezi ve güvenilir bir yönetim sağlar.

Şimdi, masaüstü uygulamamın App.Config dosyasına bir ConnectionString düğümü ekliyorum.

<connectionStrings>
  <add name="connStr" connectionString="Data Source=.; Initial Catalog=Northwind; Integrated Security=SSPI"/>
</connectionStrings>

Sonrasında, Form1 yapıcı metodunun altında aşağıdaki gibi bir tanımlama yapabilirim.

// Config dosyasıyla bağlantı oluşturmak
SqlConnection connConfig = new SqlConnection(ConfigurationManager.ConnectionStrings["connStr"].ConnectionString);

Not : ConfigurationManager sınıfını kullanabilmek için System.Configuration DLL ve namespace’ini projenize eklemeniz gerekir.

Veritabanına bağlanma yöntemlerimizi inceledik. Şimdi de komutları veritabanına iletecek SQL Command nesnemizi oluşturalım.

Hemen bağlantı katarı tanımlamasının altında aşağıdaki tanımlamayı yapalım. Bu nesnesi tüm işlemlerde kullanacağız.

 // SQL Server'a gönderilerek çalıştırılacak SQL cümlesi.
SqlCommand cmd;

Bu işlemlerden sonra uygulamamızı tasarlamaya başlayabiliriz. Uygulamamın ekran görünümü aşağıdaki gibidir.

Ekran Alıntısı

Veri Ekle(Insert) butonu altında;

string sAd = txtSirketAd.Text;
string sTel = txtTelefon.Text;

cmd = new SqlCommand("INSERT Shippers(CompanyName,Phone) VALUES('" + sAd + "','" + sTel + "')", conn);

 // bağlantıyı aç
conn.Open();

// Sorguyu çalıştır
cmd.ExecuteNonQuery();

// bağlantıyı kapat
conn.Close();

Veri Güncelle(Update) butonu altında;

string sAd = txtSirketAd.Text;
string sTel = txtTelefon.Text;

 cmd = new SqlCommand("UPDATE Shippers SET CompanyName='" + sAd + "', Phone = '" + sTel + "' WHERE ShipperID = 4", conn);

conn.Open();

int etkilenenSatir = cmd.ExecuteNonQuery();
string mesaj = string.Empty;

if (etkilenenSatir > 0)
{
    mesaj = "İşlem başarılı";
}
else
{
    mesaj = "işlem başarısız";
}
conn.Close();
MessageBox.Show(mesaj);

Veri Sil(Delete) butonu altında;

int sID = Convert.ToInt32(txtID.Text);
cmd = new SqlCommand("DELETE FROM Shippers WHERE ShipperID = '" + sID + "'", conn);

conn.Open();
int sonuc = cmd.ExecuteNonQuery();
string mesaj = string.Empty;

if (sonuc > 0)
{
    mesaj = "İşlem başarılı";
}
else
{
    mesaj = "İşlem başarısız";
}
conn.Close();
MessageBox.Show(mesaj);

Veritabanı işlemlerini başarıyla gerçekleştirdik. Dikkat etmeniz gereken önemli nokta, bağlantının açıldıktan sonra işlemlerin veritabanına yaptırılması ve sonrasında tekrar bağlantının kapatılması olmalıdır.

İyi çalışmalar.

Yorumla

Yorum