Ilk olarak kisaca Stored Procedürden bahsedeyim;
Storedd Procedures SQL Server üzerinde tutulan T-SQL ifadeleridir. Belli bir görevi yerine getirebilmek amaciyla yapilandirilirlar. SQL Server üzerinde derlenirler. Belirledigimiz sartlara göre, program içinden çagrilarak kullanilirlar.
T-SQL deyimleriyle yazilan Stored Procedures sadece ilk kez çalistirildiklarinda derlenirler. Daha sonraki çalistirma işlemlerinde derlenmezler. Bu sayede çalismalarimizda hiz kazanmis oluruz.
Stored Procedürlerin bir baska artisi da çok güvenlidir…
Örnek:
Create Proc LastTenPerson
as
select top 10 ContactID, FirstName, LastName from Person.Contact order by ContactID desc
Bu Stored procedurü çalistiralim; exec LastTenPerson > bize geri dönen sonuç;
Bize son 10 kaydi geri döndürdü… Simdi isterseniz bu olusturdugumuz Stored Procedurü, ASP.NET Projesinde kullanalim; Ilk olarak bir web projesi açalim;
Projemizi olusturduktan sonra sayfamiza bir adet grid ekleyelim;
Evet simdi kaydimizi görüntüleyecek olan kodlari yazalim ilk olarak System.Data ve System.Data.SqlClient namespacelerini sayfamiza ekleyelim… using System.Data;
using System.Data.SqlClient; Daha sonra sayfamizda kullanacagimiz degiskenleri tanimlayalim; SqlConnection Cnn;
SqlCommand Cmd;
SqlDataAdapter Da;
DataSet Ds; Simdi Kaydimizi listeleyecek olan voidi yazalim(işterseniz function olarak yada class içerisinde kullanabilirsiniz). private void GetLastTenPerson()
{
Cnn = new SqlConnection("Data Source=localhost; Initial Catalog=AdventureWorks; trusted_connection=yes");//DB Baglantisi
Cmd = new SqlCommand();
Cmd.CommandType = CommandType.StoreddProcedure;//Command Tipi
Cmd.CommandText = "LastTenPerson";//SP Adi
Cmd.Connection = Cnn;//Commandin kullanacagi 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 çagiralim; protected void Page_Load(object sender, EventArgs e)
{
GetLastTenPerson();
} Simdi Projemizi çalistiralim;
Son 10 kaydimizi başarı ile listeledik; Simdi Stored Proceduremizi biraz daha genisletelim ve Bir kriter ekleyelim. Örnegin Firstname’ni biz disaridan girelim ve girdigimiz Firstname’e göre kayitlar listelensin. Bunun için Stored Procedure içerisine disaridan bir parametre almaliyiz. Biz buna input parametre diyoruz… Stored Proceduremizin düzenlenmis hali; Alter Proc LastTenPerson //SP’mizi Alter ettik
@FirstName varchar(20)//Input 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; Simdi bunu ASP.NET tarafinda da yapalim; Bunun için projemize bir adet buton ve bir adet textbox ekleyelim. Sayfamizdaki kodlari Command out yapalim yada silelim çünkü SP degistigi için çalistiginda hata verecektir. Button1’e tiklayalim; 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.StoreddProcedure;
Cmd.CommandText = "LastTenPerson";
Cmd.Parameters.AddWithValue("@Firstname", TextBox1.Text);// Disaridan Stored 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();
} Simdi projemizi tekrar çalistiralim ve sonucu görelim…
Yukarida da görüldügü gibi Firstname’i sadece ‘Crystal’ olan kayitlar listelenmektedir… Bu makalenin de sonuna geldik, bir sonraki makale de Insert, Update ve Delete işlemlerini inceleyecegiz… Baska 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