top of page

Asp.Net ile Stored Procedure Kullanimi

  • Writer: Sevdanur GENC
    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 ;

Recent Posts

See All
C# Dependency Injection

Dependency Injection (DI) aslinda bir tasarım şablonu olarak bilinmektedir ve genel amacı nesneler arasında bulunan bağımlılıkları azaltarak kullandığı İnterface'ler sayesinde implement edilen içerikl

 
 
 
Windows Azure Nedir?

Windows Azure, hizmet yönetim ortamlarını ve servislerini barındırarak geliştirilmiş bulut teknolojilerinin oluştuğu bir işletim sistemi gibi düşünülebilir. Windows azure, Microsoft veri merkezleri

 
 
 
Navigation - Navigasyon

Kullanıcıların Metro Style uygulamalarında kolay bir şekilde kullanabilmeleri ve sayfalar arası geçişleri daha sezgizel bir şekilde yapabilmeleri için geliştirilmiş bir yöntemdir. Bu özellik sayesinde

 
 
 

Comments


©2035 by Sevdanur Genc. Powered and secured by Wix

bottom of page