Asp.Net ile veritabanı bağlantı işlemleri

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(); }
    }
}

Bir yorum yaz.


© 2010 Mustafa Ülkü'nün Not Defteri. Her hakkı saklıdır..
İmkansız diye bir şey yoktur..