6 Ağustos 2013 Salı

Stored Procedure Kullanımı

   Hazırlayacağımız projelerde hangi veritabanını kullanırsak kullanalım yazdığımız komutlar her çalıştırmamızda veritabanımıza gönderilir ve dönen değer bize geri gönderilir.Eğer biz bu işlemi yapacak bir prosedürü veritabanımızda yazarsak her seferinde aynı işlemi yapmak zorunda kalmayız.Yani 1 kere oluştururuz ve istediğimiz kadar kullanırız.Bunu fonksiyon mantığına benzetebiliriz.Bu işlem, projelerimiz için veritabanı işlemlerinde hız artışı sağlar.Ayrıca bir veritabanı sorgusu değiştirmek istersek, bunu sadece stored procedure içerisinde değiştirmemiz yeterli olacaktır.Aksi durumda komutu çalıştırdığımız her yerde sorgu cümlesini değiştirmemiz gerekecekti
   Stored procedure’lerin genel yapısı şu şekildedir;
CREATE PROCEDURE prosedürAdı ( degiskenler )
   Ek Bilgiler
BEGIN
   yazılacak procedure
END;
   Bu konu  için MSSQL veritabanını kullanacağım, kullanımını bunun üzerinden anlatacağım
   Veritabanımızı oluşturduktan sonra kisiler adında bir tablo oluşturuyoruz;
   Bunun için Object Explorer üzerinde veritabanımıza tıklıyoruz ve daha sonra Tablese sağ tıklıyoruz New Table diyerek alanlarımızı giriyoruz.Daha sonra Ctrl+S tuşlarına basarak tablomuza isim vererek (kisiler) kaydediyoruz ve çıkıyoruz.Tablomuzun görüntüsü şöyle olacaktır;

stored procedure
     
    Şimdi ise  sol taraftaki Object Explorer penceresinde Databases yanında bulunan + işaretine tıklıyoruz.Daha sonra çıkan veritabanları üzerinde hangi veritabanı için stored procedure oluşturmak istiyorsak o veritabanının yanındaki + simgesine tekrar tıklıyoruz
    Daha sonra Programmability ve ardından Stored Procedure ‘e sağ tıklıyoruz New Stored Procedure diyerek çıkan penceredeki açıklama satırlarını siliyoruz ve aşağıdaki kod satırlarını yazıyoruz
CREATE PROC ekle
 (
  @ad varchar(10),
  @soyad varchar(10),
  @sehir varchar(10),
  @yas int,
  @cinsiyet varchar(6)
 )
AS
 BEGIN
 insert into kisiler values(@ad,@soyad,@sehir,@yas,@cinsiyet)
 END
  GO
 execute ekle 'Mehmet','Kirazlı','İstanbul',21,'erkek'
    Buradaki kodları açıklayalım.Prosedürümüzün adını ekle olarak ayarladık ve parantezler içerisine alacağı değişkenleri yazdık.Begin-End arasına Sql sorgumuzu yazıyoruz.Bu sorgu ekleme işlemi yapan sorgudur.Görüldüğü gibi 5 değer almaktadır.En alt satıra yazdığımız execute komutunda ise prosedürümüze göndereceğimiz değerleri verdik.Bu komut ile procedure çalışınca aynı anda kayıt da ekleyecektir.Bu işlemlerden sonra yazdığımız stored procedure için Ctrl+F5 e basarak debug ediyoruz.Daha sonra F5 e basarak stored procedur ‘u kaydediyoruz.Şimdi ise Programmability den stored procedur üzerine sağ tıklayarak Execute Stored procedure diyoruz ve kaydımızı ekliyoruz.Tablomuza kaydımız eklenecektir ve son hali ise aşağıdaki gibi olacaktır;
Stored procedure

  Stored Procedurlerin genel mantığı bu şekildedir.Siz de bunun üzerinden yeni tablolar ekleyebilir,daha karışık sorgular yazabilirsiniz.Örneğin daha geniş bir tablo oluşturarak,notu 60 dan yüksek öğrencileri veya maaşı 2000 den az olan çalışanları listeleyebilirsiniz

    Peki Asp.Net sayfalarında Stored Procedure erişimi nasıl olur? Bunun için bir ziyaretçi defteri tarzında bir şey yapalım.Default.aspx sayfamızın tasarımını aşağıdaki gibi hazırlayalım;
stored procedure
  Projemize veritabanı ekleme kısmını önceki yazılarda görmüştük.Veritabanını ekledikten sonra Yorum adında bir tablo oluşturalım ve yukarıdaki alanları veritabanına ekleyelim;
   Şimdi ise veritabanımızda stored procedure oluşturmamız gerekiyor.Bunun için yazımızın başındaki gibi procedure ekliyoruz,gerekli parametreleri giriyoruz.Stored Procedure adını StoredProcedure2 olarak kaydedelim
Son olarak Default.aspx sayfamızın kod tarafında
   using System.Data.SqlClient;
   using System.Data;
kütüphanelerini ekliyoruz
  Şimdi de Yorum yap butonuna tıklandığında yapılacak olanları yazıyoruz
protected void Button1_Click(object sender, EventArgs e)
 {
 SqlConnection bağlantı = new SqlConnection("Data Source=.;Initial Catalog=yorumlar;");
 SqlCommand komut = new SqlCommand("StoredProcedure2", bağlantı);
 komut.CommandType = CommandType.StoredProcedure;
 komut.Parameters.Add("@ad", SqlDbType.VarChar).Value = TextBox1.Text;
 komut.Parameters.Add("@soyad", SqlDbType.VarChar).Value = TextBox2.Text;
 komut.Parameters.Add("@eposta", SqlDbType.Text).Value = TextBox3.Text;
 komut.Parameters.Add("@yorum", SqlDbType.Text).Value = TextBox4.Text;
 komut.Connection.Open();
 komut.ExecuteNonQuery();
 komut.Connection.Close();
   YorumYap butonuna tıklanınca,textbox lara girilen değerleri veritabanına ekleyecektir.Bunları GridView kullanarak ekranda gösterebilirsiniz

Hiç yorum yok:

Yorum Gönder