SQL Server 2005 Stored Procedures oluşturma ve ASP.Net ya da ASP ile kullanma.

Merhaba .

Bu makalede SQL Server 2005 de Stored Procedures kavramına inceliyoruz. Makale içerisinde uzun uzun  Stored Procedures yazmak  yerine kısaca  SP olarak yazacağım.

                İlk olarak SP  nedir , ne işe yarar ona bir bakalım.
SP (Türkçe : Saklı Yordamlar)   database server'da saklanan SQL ifadeleridir ve sadece ilk çalıştırıldıklarında derlenirler dolayısıyla program ve web uygulamalarının performansını artırırlar

 Mesela bir seçme   işlemi  için  sql  sorgusu yazmak zorundayız (linq vb.  bir teknoloji kullanmıyorsak).   Sql  cümlelerini normal şartlarda asp.net de Code Behind  tarafında  sqlcommand  a parametre olarak yazmamız gerekirdi  .  Bu şekilde yaptığımız taktirde sql kodu  her çalıştırıldığında  yeniden derlenir.   
  Oysa  SP kullanmış olsak     Sql cümlemizi SQL server içerisinde yazıp  sonra SqlCommand nesnesine   SP ye verdiğimiz ismi parametre olarak belirtebiliriz . Böyle yaptığımız takdirde hem performans artışı olur hem de bir defa yazdığımız sql kodunu bir daha ihtiyaç duyduğumuzda aynı kodu bidaha yazmak zorunda kalmayız.

  Örneğin :
 ASP.net ile bir  e-ticaret sitesi    yazdığımızı  farz  edelim ve bu site üzerindeki ürünlerin  isimlerine göre arama yapmak istiyor olalım


Veritabanı yapımız aşağıdaki gibi olmuş olsun (SQL Server 2005 Express) :
Veri tabanı adı: EticaretDeneme.mdf   
Tablo Adımız  : Urunler     
         olsun ve alanlar da aşağıdaki gibi olsun.


Tablomuza birkaç tane de  ürün ekleyelim ve tablomuzun görünüm aşağıdaki gibi oldu.




Şimdi kodlara geçelim ;

İlk olarak  Default.aspx  sayfasının tasarımını aşağıdaki gibi yapalım .



Tasarım tamam olduğuna göre şimdi kodlamaya başlayabiliriz. Visual Studio da Server Exlporer dan EticaretDeneme.Mdf nin yanındaki  + işaretine tıklayıp açılan listeden Stored Procedures in üstünde sağ tıklayıp    Add New Stored Procedure ye  tıklıyoruz. Karşımıza Hazır bir  SP  şablonu çıkacak biz sıfırdan kendimiz yazacağımız için sayfanın tamamını siliyoruz. SP oluşturmaya başlayalım .

  SQL Serverda  SP oluşturma  deyimi  Create Procedure SP_adi  ya da kısaca  Create Proc SP_adi dir.
bu SP mizin görevi sitemizdeki  textbox ın içindeki değeri veritabanında aramak olduğundan  parametre olarak  string tipinde bir değer alacaktır . Almış olduğu bu değere göre geri bir result set dönürecektir.  SP lerde parametreler     @parametre_adı  veritipi    şeklinde yazılırlar. Şimdi SP mizi yazalım  . 

KOD

Create Procedure
veri_getir -- SP yi tanımladık ve isim olarak veri_getir yazdık

@aranan_kelime nvarchar(200)  -- parametremize isteğimiz ismi verdik ve veri tipini belirttik burada önemli olan nokta

-- parammetre ile bu parametrenin aram yapacağı tablodaki alan adının veir türünin aynı olması ve uzunluğunun alan uzunluğundan fazla olmaması

 

AS -- as diyerek sql cümlemize geçiyoruz

 

Select * from Urunler Where UrunAdi like  '%'+  @aranan_kelime +  '%' 

 Şimdi de bu SP yi sitemizden çağırıp verileri sayfada  gösterelim.


Default.aspx.cs


using System;

using System.Configuration;

using System.Data;

using System.Data.SqlClient;

using System.Linq;

using System.Web;

using System.Web.Security;

using System.Web.UI;

using System.Web.UI.HtmlControls;

using System.Web.UI.WebControls;

using System.Web.UI.WebControls.WebParts;

using System.Xml.Linq;

 

public partial class _Default : System.Web.UI.Page

{

    Fonksiyon fonk=new Fonksiyon();

    protected void Page_Load(object sender, EventArgs e)

    {

        lbl_Sonuc.Text = "";

    }

    protected void btn_Ara_Click(object sender, EventArgs e)

    {

      

        SqlConnection cn = fonk.baglan();

        SqlCommand cmd = new SqlCommand("veri_getir",cn);

        cmd.CommandType = CommandType.StoredProcedure;

        cmd.Parameters.AddWithValue("@aranan_kelime",txtUrunAdi.Text);

        SqlDataReader dr = cmd.ExecuteReader();

        while (dr.Read())

        {

           lbl_Sonuc.Text += dr["UrunAdi"].ToString() + "<br>";

        }

        cn.Close();

    }

}

Kodları verdiğimize göre açıklayalım. İlk olarak bilinidik işlemleri yaptık veritabanımıza bağlantık bunu herzamanki gibi Class dan yaptık.

 Sonra bir tane sqlcommand nesnesi oluşturuk ve bu sqlcommand nesnemizin içine parametre olarak sql cümlemizi yazmak yerie SQL Server da  tanımladığımız SP mizin adı olan veri_getir i yazdık.

 
  SqlCommand cmd = new SqlCommand("veri_getir",cn);
 
 Bu işlem sonunda sqlcommand ın içine yazmış olduğumuz veri_getir isminin bir SP adı olduğunu belirtmemiz gerekiyor. Aksi taktirde yorumlayıcımız veri_getir yazısını bir sql cümlesi olarak var sayacaktır ve bize sql cümlesi ile ilgili  syntax hatası verecektir .

cmd.CommandType = CommandType.StoredProcedure;


bundan sonraki işlemler zaten klasik sqlcommand ile yapılan klasik işlemler.
Bir sqldatareader tanımlayıp verilerimizi u dataredere aktarıp  datareader ile de label e yazdırdık.
              

                    SONUÇ


NOT:  Bu işlemleri ASP ile yapmak için oluşturduğunuz  RecordSeti e sql cümlesi yerine  EXEC SP_adi
 yazarak kullanılabilir  
 
Örnek :


set  rs=Server.CreateObject("adodb.recordset")
rs.open "Exec sp_urun_id_al @urun_id="&ID&"" , bag,1,3


Kolay  Gelsin.


 

Bunu beğen
Paylaş

Yorumlar
Yorum Yaz
İsim : (*)
E-mail :
Web Adresi:
:
(*)
 
Kapat