C# ta Connected Mimari nedir ve örnek kullanımı
Merhaba arkadaşlar,
C# ta veritabanı işlemleri yaparken iki tip bağlantı tipi kullanılır.Bunlar Connected ve disconnected mimari olarak bilinir.
Connected mimaride veritabanında işlem yaparken işlem süresince bağlantımız açık kalır ve sürekli olarak sql serverimizi meşgul eder.Connected mimaride veri çekerken SqlCommand connectionstring ve sqlDatareader kullanılır.Connected mimariyi kullanırken veriyi çekerken bağlantı sürekli açık kaldığı için verilerimizin en güncel olanını getirmektedir.Bu bize avantaj sağlamaktadır.Veri tabanı işlemleri yaparken yapılan değişiklikler hemen veritabanına yansıdığı için değişiklikleri direkt olarak veritabanında görebiliriz. Connected mimaride veritabanında bilgi çekerken sürekli bağlantıyı bizim açmamız ve kapatmamız gerekmektedir.Bu bağlantılara dikkat etmeliyiz.bir projede karşılaştığım bir sorun ise connection açılmış ve kapatılmamış.Kullanıcılar sayfayı açtıkça farklı kişiler connection açık kalıyor ve server bir süre sonra şişiyor.Connected mimariye uygun olarak önceki yazımda linkte belirttiğim gibi kullanımı vardır.Örnek yazı için tıklayınız.örnek Connected mimari kodu ;
ad = Convert.ToString(txtad.Text);
sifre = Convert.ToString(txtsifre.Text);
cnn.Open(); // Bağlantıyı açıyoruz.
SqlCommand cmd = new SqlCommand(“Select KullaniciID from Kullanici where KullaniciAd=@ad and Sifre=@sifre and aktif=1”, cnn); // K.adı ve şifre veritabanında varmı ona bakıyoruz.
cmd.Parameters.AddWithValue(“@ad”, ad.ToString()); // Sorgumuza parametre veriyoruz.
cmd.Parameters.AddWithValue(“@sifre”, sifre.ToString());//Parametreler sql injection açığınıda kapatıyor.
try
{
SqlDataReader rd = cmd.ExecuteReader(); // SqlCommand’ın ExecuteReader() metodu ile dönen değeri SqlDataReader nesnemize atıyoruz.
while (rd.Read()){ // rd.Read bool bir değer dönderir.true yada false.True ise içeriye giriyor.
kid = rd[0].ToString();//SqlDataReader nesnemizin 0.indisindeki veriyi kid değerine atıyoruz.
MessageBox.Show(“Giriş Başarılı…” , “Bilgi Sayfası”);
frm.id = Convert.ToInt32(kid.ToString()); //Veriyi 2.forma gönderiyoruz.
frm.Show(); //Daha önce instance aldığımız formu aktif ediyoruz.
this.Hide();//1.formu gizliyoruz.
} }
catch (Exception)
{
MessageBox.Show(“Hatalı Giriş Yaptınız”); // Bir hata ve kullanıcı yok ise bu uyarı mesajı veriliyor.
}
}
cnn.Close();