Makale Özeti

Merhaba arkadaşlar, bu makalemizde ASP.NET İle SQL Server üzerinde Store Procedure oluşturup, oluşturduğumuz store procedurü ASP.NET Projemizde kullanacağız…

Makale

Store Procedures:

İlk olarak kısaca Store Procedürden bahsedeyim;

Stored Procedures SQL Server üzerinde tutulan T-SQL ifadeleridir. Belli bir görevi yerine getirebilmek amacıyla yapılandırılırlar. SQL Server üzerinde derlenirler. Belirlediğimiz şartlara göre, program içinden çağrılarak kullanılırlar.

T-SQL deyimleriyle yazılan Store Procedures sadece ilk kez çalıştırıldıklarında derlenirler. Daha sonraki çalıştırma işlemlerinde derlenmezler. Bu sayede çalışmalarımızda hız kazanmış oluruz.

Store Procedürlerin bir başka artısı da çok güvenlidir…

Örnek:

Create Proc LastTenPerson

as

select top 10 ContactID, FirstName, LastName from Person.Contact order by ContactID desc

Bu Store procedurü çalıştıralım;

exec LastTenPerson > bize geri dönen sonuç;



Bize son 10 kaydı geri döndürdü…

Şimdi isterseniz bu oluşturduğumuz Store Procedurü, ASP.NET Projesinde kullanalım;

İlk olarak bir web projesi açalım;



Projemizi oluşturduktan sonra sayfamıza bir adet grid ekleyelim;



Evet şimdi kaydımızı görüntüleyecek olan kodları yazalım ilk olarak System.Data ve System.Data.SqlClient namespacelerini sayfamıza ekleyelim…

using System.Data;

using System.Data.SqlClient;

Daha sonra sayfamızda kullanacağımız değişkenleri tanımlayalım;

SqlConnection Cnn;

SqlCommand Cmd;

SqlDataAdapter Da;

DataSet Ds;

Şimdi Kaydımızı listeleyecek olan voidi yazalım(İsterseniz function olarak yada class içerisinde kullanabilirsiniz).

private void GetLastTenPerson()

{

Cnn = new SqlConnection("Data Source=localhost; Initial Catalog=AdventureWorks; trusted_connection=yes");//DB Bağlantısı

Cmd = new SqlCommand();

Cmd.CommandType = CommandType.StoredProcedure;//Command Tipi

Cmd.CommandText = "LastTenPerson";//SP Adı

Cmd.Connection = Cnn;//Commandin kullanacağı Connection

if (Cnn.State == ConnectionState.Closed) Cnn.Open();

Da = new SqlDataAdapter(Cmd);

Ds = new DataSet();

Da.Fill(Ds,"table");

GridView1.DataSource = Ds.Tables[0];

GridView1.DataBind();

}

En son olarak bunu Formun Load’da çağıralım;

protected void Page_Load(object sender, EventArgs e)

{

GetLastTenPerson();

}

Şimdi Projemizi çalıştıralım;



Son 10 kaydımızı başarı ile listeledik; Şimdi Store Proceduremizi biraz daha genişletelim ve Bir kriter ekleyelim. Örneğin Firstname’ni biz dışarıdan girelim ve girdiğimiz Firstname’e göre kayıtlar listelensin. Bunun için Store Procedure içerisine dışarıdan bir parametre almalıyız. Biz buna input parametre diyoruz…

Store Proceduremizin düzenlenmiş hali;

Alter Proc LastTenPerson //SP’mizi Alter ettik

@FirstName varchar(20)//İnput Parameter

as

select top 10 ContactID, FirstName, LastName from Person.Contact

where FirstName=@FirstName

order by ContactID desc


exec LastTenPerson 'Crystal'

Sonucu görelim;



Firstname’i sadece Crystal olanlar geldi; Şimdi bunu ASP.NET tarafında da yapalım;

Bunun için projemize bir adet buton ve bir adet textbox ekleyelim. Sayfamızdaki kodları Command out yapalım yada silelim çünkü SP değiştiği için çalıştığında hata verecektir. Button1’e tıklayalım;

protected void Button1_Click(object sender, EventArgs e)

{

Cnn = new SqlConnection("Data Source=localhost; Initial Catalog=AdventureWorks; trusted_connection=yes");

Cmd = new SqlCommand();

Cmd.CommandType = CommandType.StoredProcedure;

Cmd.CommandText = "LastTenPerson";

Cmd.Parameters.AddWithValue("@Firstname", TextBox1.Text);// Dışarıdan Store Procedure parametre ekliyoruz..

Cmd.Connection = Cnn;

if (Cnn.State == ConnectionState.Closed) Cnn.Open();

Da = new SqlDataAdapter(Cmd);

Ds = new DataSet();

Da.Fill(Ds, "table");

GridView1.DataSource = Ds.Tables[0];

GridView1.DataBind();

}

Şimdi projemizi tekrar çalıştıralım ve sonucu görelim…



Yukarıda da görüldüğü gibi Firstname’i sadece ‘Crystal’ olan kayıtlar listelenmektedir…

Bu makalenin de sonuna geldik, bir sonraki makale de Insert, Update ve Delete işlemlerini inceleyeceğiz…

Başka bir makalede görüşmek üzere başarı ve iyi günler dilerim.

Sem GÖKSU
MCP | MCAD.NET | MCTS

Örnek Kodlar için mail adresimi kullanabilirsiniz
semgoksu@semgoksu.com  

Kaynaklar
http://msdn.com
 
Puan: