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ı
Ş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ı 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.
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;
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.
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)
İ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.
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)
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.
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
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.
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
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>
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
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ı
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
<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.