Bu makalede Stored Procedurelerin C# uygulmalarında nasıl güvenliği arttırdığını göreceğiz
Stored Procedureler uygulama mantığından çok sql mantığını kullanırlar ve bu da güvenliğin artması ve sql injection gibi saldırılara karşı bizi korur.
Bu makalede Stored Procedures Sql açıklamalarıyla nasıl kullanıldığını öğrenecez. Basit bir web form
kullanarak Class kullanarak SQl database'e bağlanmayı göreceğiz
İlk olarak Visual Studio içinde Server Explorer kullanarak databasemizi oluşturacaz. ilk olarak Visual Studioda
proje oluşturuyoruz. App_Data klosörüne Sql Server Database ekliyoruz. Bundan sonra Server Explorer Penceresi açılacak ve buradan tables klosörüne sağ tıklayarak
yeni bir tablo ekliyoruz. bu tabloya ID,Name ve Age stunlarını ekliyecez ve türleri sırasıyla bigint, varchar(25), ve int olacak. ve ID sütünunu Primary Key ve
Identity Specification sütünunu ayarlayıp tabloya isim verip kaydediyoruz.
Tabloyu kaydettikten sonra üzerinde sağ tuş yaparak Show Table Data yı tıklıyoruz Bikaç yeni veri ekliyoruz. Böylece bunları web form da gösterebilecez.
Şimdi Stored Procedure eklemeye başlıyalım. Stored Procedures klosörüne sağ tıklayıp Add New Stored Procedure Aşağıdaki kodları yazalım
CREATE PROCEDURE dbo.StoredProcedure1
/*
(
@parameter1 int = 5,
@parameter2 datatype OUTPUT
)
*/
AS
/* SET NOCOUNT ON */
RETURN
Bu kodlar Stored Procedure için temel kodlardır. Bizim istediğimiz Databaseden oluşturduğumuz verileri Stored Procedure ile göstermek. Böylece temel kodumuzu
aşağıdaki gibi değiştiriyoruz.
CREATE PROCEDURE dbo.GetAllData
AS
SELECT * FROM Table1
Stored Procedure kaydettiğimizde CREATE ALTER olarak değişecek Burada yaptığımız Tablodaki bütün sütunları çekmek
Sonrasında yapacağımız database için Bağlantı cümlesini oluşturmak. Bunu yapmanın en kolay yolu toolboxtan SqlDataSource Controlünü projemize sürüklemek
sonrasında dropdown Databasimizi seçip ileri butonuna basıyoruz. Databaseden asterisk (*) özelliğini seçip ileri butonuna basıyor ve Finish butonun basıyoruz.
Şimdi Web.config klosörüne aşağıdaki gibi Connection String eklenmiş olması lazımdır. Şimdi SqlDataSource rahatlıkla silebiliriz. Eğer connection string aşağıdaki gibi
eklenmemişse aşağıdaki gibi değiştirebilirsiniz.
<connectionStrings>
<add name="ConnectionString" connectionString="Data Source=.SQLEXPRESS;AttachDbFilename=|DataDirectory|Database.mdf;Integrated Security=True;User Instance=True" providerName="System.Data.SqlClient" />
</connectionStrings>
Database bağlanmak için clasımızda connection stringi kullanacağız. connection stringi web.config klosöründe saklamamız güvenliğimiz açısından büyük önem taşımaktadır
Ayrıca ilerdeki değişiklikler için bu cümlenin web.config klosöründe bulunması bize büyük rahatlık sağlayacaktır.
Clasımızı oluşturmak içim Proje klosörümüzde sağ tuşu tıklayıp App_Code klasörünü ekliyoruz Bu klasörün içine Class ekliyoruz bu classın adını StoredProcedures olarak adalndırıyoruz
Clasımızı aşağıdaki gibi dolduruyoruz.
using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Data.SqlClient;
using System.Web.Configuration;
/// <summary>
/// Summary description for StoredProcedures
/// </summary>
namespace DBtutorials
{
public class StoredProcedures
{
public StoredProcedures()
{
}
/// <summary>
/// Gets all columns from Table1
/// </summary>
/// <returns>DataTable of all columns in Table1</returns>
public static DataTable GetAllData()
{
DataTable allData = new DataTable();
SqlConnection connection = new SqlConnection(WebConfigurationManager.ConnectionStrings["ConnectionString"].ToString());
try
{
SqlCommand cmd = new SqlCommand("GetAllData", connection);
cmd.CommandType = CommandType.StoredProcedure;
connection.Open();
SqlDataAdapter adapter = new SqlDataAdapter(cmd);
adapter.Fill(allData);
connection.Close();
}
catch
{
connection.Close();
}
return allData;
}
}
}
Bir sonraki adımda Repeater oluşturup verilerimiz bunun içinde göstereceğiz.
<form id="form1" runat="server">
<asp:Repeater ID="Repeater1" runat="server">
<ItemTemplate>
ID: <%# Eval("ID") %>
<br />
Name: <%# Eval("Name") %>
<br />
Age: <%# Eval("Age") %>
<br /><br />
</ItemTemplate>
</asp:Repeater>
</form>
Default.aspx sağ tuşu tıklayarak Default.aspx.cs dosyasını açalım.
şimdi kodları aşağıdaki gibi ekleyelim.
using System;
using System.Configuration;
using System.Data;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using DBtutorials;
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
Repeater1.DataSource = StoredProcedures.GetAllData();
Repeater1.DataBind();
}
}
Projemizi çalıştırıp kodumuzun çalışıp çalışmadığını rahatlıkla görebiliriz.
Bu makale 409 kere okundu.











