Asp.NET etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster
Asp.NET etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster

4 Eylül 2014 Perşembe

ASP.NET Label' ın Text'i içinde Eval Kullanımı...

Biraz saçma bir başlık oldu ama anlatmak istediğim tam anlamıyla da bir Label ın Text değerini Eval ile doldurmak.

<asp:Label ID="LabelID" runat="server" Text='<%#Eval("TABLO SATIRI") %>'>></asp:Label>

Bu kadar bu ne işimize lazım olacak demeyin benim bir işime yaradıysa sizin de illaki bir yerlerde bir işinize yarar. Atın bir köşeye kullanılacağı günü beklesin.

10 Nisan 2014 Perşembe

ASP.NET CLASS KULLANARAK VERİTABANI İŞLEMLERİ

Asp.NET mimarisinin temelini oluşturan CLASS yapısını kullanarak veri tabanı işlemlerini nasıl daha az kodla ve daha stabil yapabiliriz bunu göreceğiz.

Mevzu ilk etapta karışık gibi görünse de projelerinizde bu yapıyı kullanmaya başladığınızda esasında işinizi ne kadar kolaylaştırdığını ve veri tabanı işlemlerini ne kadar hızlı yaptığınızı göreceksiniz.

Ben örneği Access veri tabanı üzerinden yapacağım ama mantığı anladığınız takdirde zaten bütün veri tabanları için yapılacak işlemler aynı.

Hikayemizde kişileri kaydettiğimiz bir listesi olsun. Listede Kişi Adı, Telefonu, Email adresi olsun.

Öncelikle veri tabanımızı oluşturalım ben veri tabanına “classDB” adını vereceğim. Veri tabanını oluşturduktan sonra “Kişiler” adında bir tablo oluşturalım. Tablonun elemanlarının “KisiID”,” KisiAdi”, “KisiTel” ve ”KisiEmail” olduğunu varsayalım.



Veri tabanını Projeye Ekleme
Oluşturduğumuz Web sitemize ekleyebilmek için bir App_Data klasörüne ihtiyacımız var. Bu klasörü proje adımıza sağ tıklayarak Add > Add ASP.NET Folder > App_Data yolunu izleyerek ekleyebiliriz.



App_Data klasörünü ekledikten sonra içine classDB (Ben classDB vermiştim) isimli veri tabanını atıyoruz.


Veri tabanıyla olan işimiz bitti.
Şimdi bu veri tabanı üzerinde işlem yapmamızı sağlayacak Select, insert,update ve delete işlemlerini yapmamızı sağlayacak olan class ımızı oluşturacağız.

Class ın Oluşturulması
Asp.NET class ları App_Code klasörünün içinde tutuyor. O bakımdan ilk önce bu dosyayı oluşturuyoruz. Yukarıda App_Data klasörü ile aynı adımları izleyerek (Add > Add ASP.NET Folder > App_Class ) dosyamızı ekliyoruz.
App_Code dosyasını ekledikten sonra bu dosyaya sağ tıkjlıyoruz ve Add > Add New Items… yolunu izleyoruz.

Açılan pencereden Class öğesini seçiyoruz Add butonuna tıklamadan önce Class ımıza bir isim veriyoruz ben “Baglantim.cs” dedim.


Artık Class ımızı kodları yazmak için hazır.
Veri tabanı ve Class ımızı oluşturduktan sonra Solution Explorer kısmında bu eklediğimiz klasörleri 
görebiliyor olmamız lazım.


Veri  Tabanının Bağlanması

App_Data içine koyduğumuz veri tabanı üzerinde çalışabilmemiz için projemize dahil etmemiz gerekmektedir. Bunun çeşitli yolları vardır. Ben genellikle veri tabanını web.config dosyası üzerinden bağlıyorum ama siz isterseniz oluşturduğumuz Baglantim.cs içinden de bu bağlantıyı yapabilirsiniz.
Web.config içine 

“<connectionStrings>
      <add name="baglanti" connectionString="Provider=Microsoft.jet.OLEDB.4.0 ;Data Source=|DataDirectory|\ClassDB.mdb" providerName="System.Data.OleDb"/>
</connectionStrings>

Şeklinde bağlantımızı tanımlıyoruz.
Class Dosyasının İçeriği

Veri tabanını bağladıktan sonra sıra class ımızı yazmaya geldi. Öncelikle clasımıza
using System.Data;
using System.Data.OleDb;
using System.Web.Configuration; // web.config içindeki bağlantıyı alacak

bu 3 namespace i ekliyoruz. Ben Access ile çalıştığım için OleDb namespace ini ekledim siz veritabanına göre namespace i değiştirebilirsiniz.


Class ımıza web.config dosyasında tanımladığımızı veri tabanı bağlantısını tanımlıyoruz.

public OleDbConnection baglan()
    {
        string bag_str = WebConfigurationManager.ConnectionStrings["baglanti"].ConnectionString;
        OleDbConnection baglanti = new OleDbConnection(bag_str);
        baglanti.Open(); // baglanti connection açıyoruz
        return (baglanti); //baglanti connection döndürüyoruz
    }
Kafa karıştırmamak için çok fazla detaya girmeyeceğim sadece burada oluşturduğumuz public nesnesinin proje boyunca ihtiyacımız olacak veri tabanı bağlantısını gerçekleştirecek olmasını bilin yeter.

İnsert, Delete,Update İşlemleri için Fonksiyonun Oluşturulması

Bu işlemleri yapmak için ayrı ayrı fonksiyonlar oluşturmamıza gerek yok. Yazdığımız sorguyu okuyacak ve ona göre bize döndürecek bir fonksiyon bu aşamada işimizi fazlasıyla görecektir.

public int idu(string sqlcumle)
    {
        OleDbConnection baglan = this.baglan();
        OleDbCommand sorgu = new OleDbCommand(sqlcumle, baglan);
        int sonuc = 0;
        try
        {
            sonuc = sorgu.ExecuteNonQuery();
        }
        catch (OleDbException ex)
        {

            throw new Exception(ex.Message);
        }
        sorgu.Dispose();
        baglan.Close();
        baglan.Dispose();
        return (sonuc);
    }

DataTable ile İşlem Yapmak için Fonksiyonu Oluşturalım

Select işlemlerinde işimize yarayacak bu fonksiyon belki de projelerimizde en çok kullanacağımız fonksiyon bu olacak.

public DataTable DataTableGetir(string sql)
    {
        OleDbConnection baglan = this.baglan();
        OleDbDataAdapter adapter = new OleDbDataAdapter(sql, baglan);
        DataTable dt = new DataTable();
        try
        {
            adapter.Fill(dt);
        }
        catch (OleDbException ex)
        {

            throw new Exception(ex.Message);
        }
        adapter.Dispose();
        baglan.Close();
        baglan.Dispose();
        return dt;

    }

Esasında bu iki fonksiyon işimizi görür. Bu iki fonksiyon ile insert, update, delete ve select işlemlerimizi yapabiliriz.
Fakat yazılım yaparken her zaman “eğer aynı işi daha az kodla yapabiliyorsan, daha az kodla yap” felsefesi işler.
Bura da fonksiyonlarımıza bir yenisini daha ekleyip “DataTableGetir” fonksiyonuyla içini doldurduğumuz DataTable ın sadece ilk satırını alacağız. Zaten çoğu select cümlesi sadece ilk satır için yapılmıyor mu?

public DataRow DataRowGetir(string sql)
    {
        DataTable tablo = DataTableGetir(sql);
        if (tablo.Rows.Count == 0) return null;
        return tablo.Rows[0];
    }
Bu fonksiyon ile DataTable ın sadece ilk satırını okuyoruz.

FONKSİYONUN KULLANILMASI
Şimdi sıra geldi hazırlamış olduğumuz fonksiyonu kullanmaya.  Öncelikle Fonksiyonu kullanacağımız .cs sayfasının namespace lerine “using System.Data;” yı ekliyoruz ve fonksiyonumuzu aşağıdaki gibi çağırıyoruz.
using System.Data; //namespace i ekliyoruz

public partial class _Default : System.Web.UI.Page
{
    Baglantim bg = new Baglantim(); //Fonksiyonumuzu çağırıyoruz

    protected void Page_Load(object sender, EventArgs e)
    {

    }
}

İnsert İşlemi

İnsert.aspx

>
        <asp:TextBox ID="Kisi_Adi" runat="server"></asp:TextBox>
        <asp:TextBox ID="Kisi_Tel" runat="server"></asp:TextBox>
        <asp:TextBox ID="Kisi_Email" runat="server"></asp:TextBox>
        <asp:Button ID="Button1" runat="server" Text="Button" OnClick="Button1_Click" />
    </div>
insert.aspx.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data; //mutlaka ekliyoruz

public partial class insert : System.Web.UI.Page
{
    Baglantim bg = new Baglantim(); // Fonksiyonumuzu çağırıyoruz
    protected void Page_Load(object sender, EventArgs e)
    {

    }
    protected void Button1_Click(object sender, EventArgs e)
    {
        string adi = Kisi_Adi.Text.ToString();
        string email = Kisi_Email.Text.ToString();
        string tel = Kisi_Tel.Text.ToString();

        bg.idu("insert into Kisiler (KisiAdi,KisiTel,KisiEmail) Values ('"+adi+"', '"+tel+"', '"+email+"')"); // insert cümlemiz

    }
}

görüldüğü gibi tek satırda insert olayını halletmiş oluyoruz.

Update İşlemi

insert işleminin aynısı sadece insert cümlesi yerine update cümlesi yazıyoruz

bg.idu("Update Kisiler SET KisiAdi='"+adi+"', KisiTel='"+tel+"',KisiEmail='"+email+"' where KisiID=1");
Burada siz where KisiID kısmını nasıl isterseniz öyle düzenleyebilirsiniz. Ben 1 numaralı ID deki kişiyi update ettim.

Delete İşlemi

bg.idu(
"Delete from Kisiler Where KisiID=1");

Select İşlemi

select.aspx
<div>
        <asp:Repeater ID="getir" runat="server">
            <ItemTemplate>
                <%#Eval("KisiAdi") %> <br />
            </ItemTemplate>
        </asp:Repeater>
    </div>

select.aspx.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data;

public partial class Select : System.Web.UI.Page
{
    Baglantim bg = new Baglantim(); // Fonksiyonu çağırıyoruz

    protected void Page_Load(object sender, EventArgs e)
    {
        DataTable dt = bg.DataTableGetir("Select * From Kisiler"); // select cümlesi

        this.getir.DataSource = dt;
        this.getir.DataBind();
    }
}

DataTable ımızı tek satır kod ile doldura biliyoruz.

Peki sadece ilk satıra ihtiyacımız olsaydı

Select.aspx sayfasında  </asp:Repeater> den sonra bir label ekleyelim ve ID sine ilk_satir diyelim

<asp:Label ID="ilk_satir" runat="server" Text="Label"></asp:Label> bu şekilde

select.aspx.cs kısmına da aşağıda ki gibi ilk satırı yazdıralım

DataRow dr = bg.DataRowGetir("Select * From Kisiler");
ilk_satir.Text = dr["KisiAdi"].ToString();


Umarım faydalanabileceğiniz bir anlatım olmuştur örnek dosyayı Buradan indirebilirsiniz. Sorularınız olursa elimden geldiğince yanıtlamaya çalışırım.