ASP.NET ile Stored Procedure kullanımı – 1 (No Wizard) (tr-TR)

ASP.NET ile Stored Procedure kullanımı – 1 (No Wizard) (tr-TR)

Merhaba arkadaşlar,
Bu makalemizde ASP.NET ile SQL Server üzerinde Stored Procedure oluşturup, oluşturduğumuz Stored Procedure'ü ASP.NET Projemizde kullanacağız.

Stored Procedure Nedir?

İlk olarak kısaca Stored Procedure'den bahsedeyim; 

Stored Procedure SQL Server üzerinde tutulan T-SQL ifadeleridir. Belli bir görevi yerine getirebilmek amacıyla yapılandırılırlar. SQL Server üzerinde derlenirler. Belirledigimiz ş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 islemlerinde derlenmezler. Bu sayede çalışmalarımızda hız kazanmış oluruz. Stored Procedure'lerin bir başka artısı da çok güvenli olmasıdır.

Örnek
Create Proc LastTenPerson 
as 
select top 10 ContactID, FirstName, LastName from Person.Contact order by ContactID desc 


Bu Stored procedure'ü ç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 Stored Procedure'ü, ASP.NET Projesinde kullanalım;  ilk 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 void'i yazalım(isterseniz fonksiyon olarak ya da class içerisinde kullanabilirsiniz). 

private void GetLastTenPerson()
{
    Cnn = new SqlConnection("Data Source=localhost; Initial Catalog=AdventureWorks; trusted_connection=yes");//DB Baglantısı
    Cmd = new SqlCommand();
    Cmd.CommandType = CommandType.StoredProcedure;//Command Tipi
    Cmd.CommandText = "LastTenPerson";//SP Adı
    Cmd.Connection = Cnn;//Commandin kullanacagı 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 Stored Procedur'emizi biraz daha genişletelim. Bir kriter ekleyelim. Örneğin Firstname'ini dışarıdan girelim ve girdiğimiz Firstname'e göre kayıtlar listelensin. Bunun için Stored Procedure içerisine dışarıdan bir parametre almalıyız. Biz buna input parametre diyoruz. 

Stored Proceduremizin düzenlenmiş 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. Ş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ısarı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ügü gibi Firstname'i sadece 'Crystal' olan kayıtlar listelenmektedir. 


See Also


Detaylı sitem
Sort by: Published Date | Most Recent | Most Useful
Comments
  • The images aren't showing for me. Thanks for the great contributions!

  • Eline sağlık! Güzel bir paylaşım

  • João Eduardo Sousa edited Revision 11. Comment: New link on see also

  • João Eduardo Sousa edited Revision 12. Comment: New link on see also

  • Add new link to a new portal about ASP.NET

  • Elinize sağlık.

Page 1 of 1 (6 items)