Öncelikle stored procedure(saklı yordamlar) hakkında biraz bilgi vermek istiyorum.Saklı yordamlar aslında sql cümlecikleridir.Veritabanı nesnesi oldukları için de veri tabanı yöneticisi programda yer alırlar.Peki neden bu gibi nesnelere ihtiyacımız var faydaları ne diyebilirsiniz.Saklı yordamların faydalarını şu şekilde sıralayabiliriz.Performans,hız,istemci yükünü azaltma,ağ trafiğini azaltma ve tabiî ki de güvenlik.Şimdi veritabanımızda nasıl bir saklı yordam oluşturulabileceğimize gözatalım.Örnek olarak oturum açma ile ilgili bir saklı yordam yazalım.Saklı yordamımızın iki parametresi olsun kullanıcı adı ve girilen şifreyi veritabanımızda oluşturmuş olduğumuz kullanıcıların bilgilerinin tutulduğu Users tablosundan kontrol edip eğer varsa oturum açma işlemini devam ettirmesini sağlayabiliriz.Ben saklı yordamımı oluşutururken sistem tablosu olan master database’ini kullandım.Önce Users adında kullanıcıadı ve şifrelerinin saklandığı tabloyu oluşturdum.Daha sonra master database’imizin altında Programmability’in altında Stored Procedure içinde sistemde bulunan saklı yordamlar bulunur.Üzerinde sağ tıklayıp New Stored Procedure seçeneği ile yeni bir saklı yordam yazacağız.Ben aşağıdaki gibi bir slq sorgusu ile sp_login adında bir saklı yordam oluşturdum.

Stored Procedure Oluşturma

Sql sorgumuzu yazdıktan sonra üstteki Execute butonu ile sorgumuzu çalıştırıyoruz.Stored Procedure klasörüne sağ tıklayıp Refresh dediğimizde oluşturmuş olduğumuz saklı yordamı görebiliriz.C#  şu sekilde saklı yordamımızı kullanabiliriz.

  SqlConnection conn = new SqlConnection("bağlantı yolu.");

  SqlCommand cmd = new SqlCommand("sp_login",conn);

  cmd.CommandType = CommandType.StoredProcedure;

  cmd.Parameters.AddWithValue("@kullanici", txtUser.Text);

  cmd.Parameters.AddWithValue("@sifre", txtPass.Text);

    conn.Open();

  SqlDataReader dr=cmd.ExecuteReader();

Gördüğünüz  gibi sp_login saklı yordamımızda parametre olarak oluşturduğumuz @kullanici ve @sifre parametrelerini  SqlCommand nesnemize parametre olarak aktardık.Saklı yordamların güvenlik kısmını  ise bir sonraki yazımda sql injection başlığı altında bahsedeceğim.

About the Author