Projelerimizde hangi veritabanını kullanırsak kullanalım yazılan komutlar her çalıştırmada veritabanına gönderilir ve sonuç döner. Eğer bu işlemi yapacak prosedürü veritabanımızda yazarsak her seferinde aynı işlemi yapmak zorunda kalmayız. 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;
1 2 3 4 5 |
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 Tables‘e 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;
Ş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
1 |
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' |
Açıklama
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 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;
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
1 2 |
using System.Data.SqlClient; using System.Data; |
kütüphanelerini ekliyoruz
Şimdi de Yorum yap butonuna tıklandığında yapılacak olanları yazıyoruz
1 2 3 4 5 6 7 8 9 10 11 12 |
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
Yeni yazılarda görüşmek üzere….
Adamsın Kirazlı. Videolu eğitimlerini de bekliyoruz.
Eline sağlık panpa 🙂
Bilişim dünyasına kattığın bu değerli konular için şahsım ve tüm bilişim aşığı insanlar adına teşekkürü bir borç bilirim Kirazli Bey.
O borç bana aittir Muhammed Bey.
Bilgileriniz icin tesekkurler istifade ettigim bir yaziydi gayet anlasilir =)