Asp.Net ile Stored Procedure Kullanimi
- Sevdanur GENC

- May 26, 2012
- 3 min read
Asp.Net projelerinizde Sql ifadelerinizi kullanirken bazi metodlara ihtiyac duydugumuzda Stored Procedure yapisini kullanmayi tercih ederiz. Peki bu yapilari kullanirken adim adim neler yapmayiz. Ne gibi bir avantaji var bundan bahsedecek olursak; her defasinda kullandiginiz bir sql cumleniz varsa bunu tek bir yapi haline getirip sadece ismi ile cagirabileceginiz metodlar olusturabilirsiniz. Isterseniz sadece Select ifadesi ile listeleme yapin, isterseniz de Insert gibi geri kalan diger CRUD islemlerini deger dondurerek yapilarinizi olusturun. Sonuc olarak veri tabaninizdaki alanlara ilgili parametreleri ihtiyaca yonelik bir sekilde kullanabileceginiz bir yapidir. Bunlari kullanma amacimizsa, Veritabaniniz ile iletisim kuracak olan uygulamaniz veya web uygulamalariniza daha esnek calismalarini sagalayabiliriz. Dilerseniz simdi adim adim bir web uygulamasinda Stored Procedure'lerin nasil kullanildigini inceleyelim.
Oncelikle Visual Studio 'nuzda bir Asp.Net Web Site uygulamasi olusturun ve ardindan Server Explorer penceresinden uygulamamizin veri tabani kismi icin kullanacagimiz bir table'i asagidaki gibi olusturalim.
Sonrasinda table'imizi Tbl_Yazarlar olarak kaydedelim ve Yeni bir Stored Procedure olusturalim.
Bunun icin asagida ki gibi Veri tabaninizin hemen alt lokasyonlarinda bulunan Stored Procedure uzerinde sag click yaparak Add New Stored Procedure diyebilirsiniz.
Ilk olusturdugunuzda karsiniza bos bir Strored Procedure yapisi gelecektir. Procedure'unuzun ismini verebilir hemen ardindanda kullanacaksaniz eger parametrelerinizi ekleyebilirsiniz. As ifadesinden sonra yine dondureceginiz parametreleri ve sql cumlelerinizi yazabilirsiniz.
SP_AspNet_App Web Uygulamasi
Peki simdi oncelikle Paramete dondurmeden basit bir sql cumlesini uygulamamiz icerisinde cagiracak sekilde tasarlayalim...
Goruldugu gibi procedure'un ismini verdikten sonra as kisminin altinda select cumlemizi yazarak tbl_yazarlar tablosundaki verilerimizi cagirmis olduk. Simdi sira geldi bu procedure'u kullanabilecegimiz web arayuzunu tasarlamaya ve hemen ardindan da bu web arayuzunun iceriginde procedure kodumuzu cagirabilecegimiz kod sayfamizi hazirlayalim.
SP_YazarlarListele Kaynak Kodlari ;
CREATE PROCEDURE dbo.SP_YazarlarListele
AS
Select * From Tbl_Yazarlar
RETURN
Default.Aspx Kaynak Kodlari ;
Tasarimimizi olustururken burada DataBound icin Repeater ekliyoruz. ilk sutuna yazarlarin ismini ikinci sutunada o yazara ait kitap sayilarini getirecegiz. Eval parametrelerini kullanarak bunlari ekrana yazdiriyoruz.
<html>
<title></title>
<style type="text/css">
.style1 { width: 25%; }
.style2 { width: 187px; }
.style3 { width: 77px; }
</style>
</head>
<body style="margin-bottom: 19px">
<form id="form1" runat="server">
<table>
<tr>
<td> Yazar Ismi </td>
<td> Kitap Sayisi</td>
</tr>
<asp:Repeater ID="Repeater1" runat="server">
<ItemTemplate>
<tr> <td> <h5>
<%#Eval("YazarIsim") %>
</h5> </td> <td> <h5>
<%#Eval("KitapSayisi") %>
</h5> </td> </tr>
</ItemTemplate>
</asp:Repeater>
</table>
</form>
</body>
</html>
Web.Config Kaynak Kodlari ;
Veri tabani baglantimizi bir kerede cagirabilmemiz icin web.config 'te ayarlamak islerimizi daha kolaya indirecektir.
Bunun icinde bir connectionstring tag'i olusturuyor, icerisine isim ve baglanti ayarlarini yaziyoruz.
<?xml version="1.0"?>
<configuration>
<system.web>
<compilation debug="true" targetFramework="4.0" />
</system.web>
<connectionStrings>
<add name="YazarlarBaglanti"
connectionString="Data Source=NANO_SNG; Integrated Security=True"/>
</connectionStrings>
</configuration>
Default.Aspx.Cs Kaynak Kodlari ;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data.SqlClient;
using System.Data;
using System.Web.Configuration;
namespace SP_AspNet_App { public partial class _default : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { string ConnectionString = WebConfigurationManager.ConnectionStrings["
YazarlarBaglanti
"].ToString(); using (SqlConnection Conn = new SqlConnection(ConnectionString)) { using (SqlCommand Cmd = new SqlCommand("
SP_YazarlarListele
", Conn))
{
Cmd.CommandType = CommandType.StoredProcedure;
DataTable dt = new DataTable();
SqlDataAdapter Da = new SqlDataAdapter(Cmd);
Da.Fill(dt);
Repeater1.DataSource = dt;
Repeater1.DataBind();
}
}
}
}
}
Ekran Goruntusu ;
SP_YazarlarKitapSayisiEkle Kaynak Kodlari ;
CREATE PROCEDURE dbo.SP_YazarlarKitapSayisiEkle
(
@YId int,
@YIsim nvarchar(50),
@KSayisi nvarchar(50)
)
AS
INSERT INTO Tbl_Yazarlar (YazarId, YazarIsim, KitapSayisi)
VALUES (@YId,@YIsim, @KSayisi)
RETURN
Yazar ismi ve kitap sayisini girebilecegimiz bir arayuz tasarliyoruz. Hemen ardindan da ilgili cs'de ki kodlari yaziyoruz.
KitapSayisiEkle.aspx Kaynak Kodlari ;
<asp:Button ID="Button1" runat="server" onclick="Button1_Click" Text="Ekle" />
</td>
</tr>
</table>
<br />
</div>
</form>
</body>
</html>
KitapSayisiEkle.Aspx.Cs Kaynak Kodlari ;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data.SqlClient;
using System.Data;
using System.Web.Configuration;
namespace SP_AspNet_App { public partial class kitapekle : System.Web.UI.Page { protected void Button1_Click(object sender, EventArgs e) { string ConnectionString = WebConfigurationManager.ConnectionStrings["
YazarlarBaglanti
"].ToString(); using (SqlConnection Conn = new SqlConnection(ConnectionString)) { using (SqlCommand Cmd = new SqlCommand("
SP_YazarlarKitapSayisiEkle
", Conn))
{
Cmd.CommandType = CommandType.StoredProcedure;
Cmd.Parameters.AddWithValue("@YId", int.Parse(TextBox1.Text));
Cmd.Parameters.AddWithValue("@YIsim", TextBox2.Text);
Cmd.Parameters.AddWithValue("@KSayisi", TextBox3.Text);
Conn.Open();
Cmd.ExecuteNonQuery();
Conn.Close();
}
}
}
}
}
Ekran Goruntusu ;
Projemize ait veri tabaninin bulundugu Server Explorer penceresinin Gorunumu ;
Projemize ait web site 'in bulundugu Solution Explorer penceresinin Gorunumu ;
Comments