ASP.net ile Veritabanı Bağlantı İşlemleri

Bu dersimizde Asp.Net tarafında veritabanı ile ilgili işlemlerden bahsediyor olacağız ve parametre ekleme yöntemi ile veritabanınna veri ekleyeceğiz.

Bu dersimizde Asp.Net tarafında veritabanı ile ilgili işlemlerden bahsediyor olacağız ve parametre ekleme yöntemi ile veritabanınna veri ekleyeceğiz.

Asp.Net ortamında veritabanı ile ilgili işlem yapılırken iki altarnatif vardır. Bunlardan birincisi Bağlantılı Ortam, diğeri ise bağlantısız ortamdır (bağlantısızdan kastımız bağlantı yok olarak anlaşılmamalı).

Ben burda bağlantılı ortamda veri kaydetme yollarından bahsedeceğim. Ama önce şunu söylemeliyim ki, bağlantılı ortamda da 4 farklı yöntem vardır. Biz bu 4 yöntemi kısaca farklı kısa kısa örnekler ile görüyor olacağız ve 3. yöntem ile veritabanına kayıt ekleme yöntemini göstereceğim.


#region 1. Yöntem Concat ile baglama yöntemi 



          //   Bu yöntem tamamen string birlestirme ile aynidir, Bu sekilde bir baglama yöntemi SQl Injection denen saldiri bicimine maruz kalacagi icin databaselerde pek kullanilmaz.. 

            SqlCommand cmd = new SqlCommand("select Count(*) from Kullanicilar where KullaniciAdi='" + kadi + "' and Sifre='" + sifre + "'", con);

#endregion



             #region 2. Yöntem string.Format metodu kullanarak 



             //Concat yöntemi kadar sagliksiz bir yöntem oldugu icin veri tabanlarinda pek kullanilmaz.. Sql ınjection olabilir 

            SqlCommand cmd = new SqlCommand(string.Format("select count(*) from Kullanicilar where KullaniciAdi={0} and Sifre={1}", kadi, sifre), con);

#endregion 



             #region 3. Parametre Ekleleme Yontemi ile Baglama (En Profesyonel Yöntem )

           //  Profesyonel olan bu parametre ekleme yontemi , Sql ınjection saldirilarindan sitemizi koruyacaktir..

            SqlCommand cmd = new SqlCommand("select count(*) from Kullanicilar where KullaniciAdi=@kullaniciadi and Sifre=@sifre", con);

            cmd.Parameters.AddWithValue("@kullaniciadi", kadi);

           cmd.Parameters.AddWithValue("@sifre", sifre);

            #endregion

             #region 4. Store Procedure Ile Calismak 

           // Egerki store procedure ile calisir isek , hem Sql Injection saldırılarından korunmuş oluruz hemde store procedure'un performansından yaralanmış oluruz.

Store Procedure ile veritabanı işlemlerini başka bir derste ayrı ele alacağım.



Şimdi parametre ekleme yöntemi ile veritabanına veri ekleyeceğiz. Bunun için ben local sql sunucumda Personel adında bir database, Personeller adında da bir Table oluşturdum.

Columns: Id (identiy specifation yes olarak ayarladım 1,1), AdSoyad, Adres, Tel, No

Aspx sayfamızın html tarafına gerekli textbox ve button kontrollerimizi yerleştiriyoruz.


<form id="form1" runat="server">

    <div>

    

    </div>

    <table class="style1">

        <tr>

            <td class="style2">

                Adı&nbsp; Soyadı:</td>

            <td>

                <asp:TextBox ID="txtAdSoyad" runat="server"></asp:TextBox>

            </td>

        </tr>

        <tr>

            <td class="style2">

                Personel No:</td>

            <td>

                <asp:TextBox ID="txtPersonelno" runat="server"></asp:TextBox>

            </td>

        </tr>

        <tr>

            <td class="style2">

                Tel :</td>

            <td>

                <asp:TextBox ID="txtTel" runat="server"></asp:TextBox>

            </td>

        </tr>

        <tr>

            <td class="style2">

                Adresi:</td>

            <td>

                <asp:TextBox ID="txtAdres" runat="server"></asp:TextBox>

            </td>

        </tr>

        <tr>

            <td class="style2">

                &nbsp;</td>

            <td>

                <asp:Label ID="lblSonuc" runat="server"></asp:Label>

            </td>

        </tr>

        <tr>

            <td class="style2">

                &nbsp;</td>

            <td>

                <asp:Button ID="btnKaydet" runat="server" onclick="btnKaydet_Click" 

                    Text="KAYDET" />

            </td>

        </tr>

    </table>

    </form>



Gerekli C# kodlarımız:


using System;

using System.Configuration;

using System.Data;

using System.Linq;

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.Xml.Linq;

using System.Data.SqlClient;



public partial class _Default : System.Web.UI.Page 

{

     SqlConnection conn;

     SqlCommand cmd;

    protected void Page_Load(object sender, EventArgs e)

    {

        conn = new SqlConnection("data source=.;initial catalog=Personel;integrated security=true");

        cmd = new SqlCommand("insert into Personeller (AdSoyad,Adres,Tel,No) values (@adsoyad,@adres,@tel,@no)", conn);

    }

    protected void btnKaydet_Click(object sender, EventArgs e)

    {

        int geriyeDonenDeger=PersonelEkle(txtAdSoyad.Text,txtAdres.Text,int.Parse(txtTel.Text.ToString()),int.Parse(txtPersonelno.Text.ToString()));

        if(geriyeDonenDeger!=0)

            lblSonuc.Text="Kayıt Başarı ile Gerçekleşti";

        else

            lblSonuc.Text="Kayıt Gerçekleştirilemedi.";

    }

    public int PersonelEkle(string adisoyadi, string adresi, int telnosu, int personelNo)

    {

        try

        {

            //ilgili kodlarımızı try blogu arasına koyuyoruz.bu nedenle kodlarımızda çalışma zamanında herhangibi bir hata meydane gelirse finally blogu kesinlikle çalışacaktır ve bağlantı nesnemizin Close metodu sayesinde bağlantı açık klamaycaktır.Performans açısından açılan her bağlantının (con.Open()) mutlaka kapatılması gerekemketedir.eğer kapatılması bir sonraki bağlantılı bir işlemde kodlarda hata meydana gelicektir.



            conn.Open();

            cmd.Parameters.AddWithValue("@adsoyad", SqlDbType.NVarChar).Value = adisoyadi;

            cmd.Parameters.AddWithValue("@adres", SqlDbType.NVarChar).Value = adresi;

            cmd.Parameters.AddWithValue("@tel", SqlDbType.Int).Value = telnosu;

            cmd.Parameters.AddWithValue("@no", SqlDbType.Int).Value = personelNo;

            //  ExecuteNonquery insert update ve delete islemlerini gerceklestirip , etkilenen kayit sayisini bize int tpinden geriye döndürcektir.bu yüzden PersonelEkle adlı metodumuzu int titpinden geriye değer döndürecek şekilde ayarladık.

            return cmd.ExecuteNonQuery();



        }

        finally { conn.Close(); }

    }

}



Uygulamayı çalıştırdım ve kayıt eklenmiş haldeki SQL sonucunun resmini aşağıda paylaşıyorum.



SQL tarafında zorluk çekenler olabilir. Bu nedenle oluşturmuş olduğum veritabanının SQL kodunu paylaşıyorum:


USE [Personel]

GO

/****** Object: Table [dbo].[Personeller] Script Date: 07/07/2010 01:38:54 ******/

SET ANSI_NULLS ON

GO

SET QUOTED_IDENTIFIER ON

GO

CREATE TABLE [dbo].[Personeller](

[Id] [int] IDENTITY(1,1) NOT NULL,

[AdSoyad] [nvarchar](50) COLLATE Turkish_CI_AS NOT NULL,

[Adres] [nvarchar](100) COLLATE Turkish_CI_AS NOT NULL,

[Tel] [int] NOT NULL,

[No] [int] NOT NULL,

CONSTRAINT [PK_Personeller] PRIMARY KEY CLUSTERED

(

[Id] ASC

)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]

) ON [PRIMARY]

  • Etiketler;
Mustafa Ülkü
www.gezicez.com
Yorum Yaz

Yorum yazabilmek için üye girişi yapmanız gerekiyor!

iyi akşamlar cok qüsel anlatmışsınız elinize saqlık... ben yeniyim bu sıralamaya qöre mi qideceqim
eğer asp.net de yeni isen C# bilginde tam ise direk veritabanı işlemlerinden başlaman pek iyi olmaz.bunun öncesinde durum yönetimi,asp.net sayfasının yaşam döngüsü,genel asp.net controllerinin kullanımı gibi konulardan başlamaılısın.sonrasında veritabanı ile çalışmaya başladığında bu ders sana büyük ölçüde yarar sağlayacaktır.ben bu tür konularda ,eğer herhangib bir yerden eğitim almıyorsan mutlaka bir asp.net kitabı almanı öneriririm.kitap üzerinden gidersin ve ileri seviyeye ualaştığında yada takılıdığın noktalar oladuğunsa sanalkurs.net teki asp.net derslerinden yararlanabilirsin.asp.net kategorisinde gerçekten çok yararlı dersler var ve hatta incelediğimde yok yok diyebilirim.başarılar dilerim
ben yaptım ama hata veriyor c# de veri tab kayıt ekleme kodlarını nereye yazacaqım ctrl f5 basınca ad soyad... cıkıyor gönder diyince hata veriyor.En son oluşturtuğunuz sayfaya nasıl ulaşıyoruz.İi qeceler...
bir haftalık stajerim asp.net bilmiyorum şefimin bana söylediqi asp.nette bana adını soyadını ve emaili sql server baqlansı ile qönder dedi yani bir aşçıya yemek yapmasını biliyor musun diosun eet diyo qit bana mısır mutfağından şunu yap diyor...
derste belirttiğim şeyleri tamamı ile yerine getirirsen bi sorun olmaycaktır.
sql tarafında zorluk çekenler olabilir bu nedenle oluşturmuş olduğum veritabanının sql kodunu paylaşıyorum. [code] USE [Personel] GO /****** Object: Table [dbo].[Personeller] Script Date: 07/07/2010 01:38:54 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE TABLE [dbo].[Personeller]( [Id] [int] IDENTITY(1,1) NOT NULL, [AdSoyad] [nvarchar](50) COLLATE Turkish_CI_AS NOT NULL, [Adres] [nvarchar](100) COLLATE Turkish_CI_AS NOT NULL, [Tel] [int] NOT NULL, [No] [int] NOT NULL, CONSTRAINT [PK_Personeller] PRIMARY KEY CLUSTERED ( [Id] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] ) ON [PRIMARY] [/code]
ayrıca tüm uygulama dosyalarını derse ekledim.indirebilirsiniz

Yukarı Git