Asp.Net - Class Kullanarak Veritabanı İşlemlerini Yönetmek (Access İçin)
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.
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.
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.
Select işlemlerinde işimize yarayacak bu fonksiyon belki de projelerimizde en çok kullanacağımız fonksiyon bu olacak.public DataTable DataTableGetir(string sql)
Esasında bu iki fonksiyon işimizi görür. Bu iki fonksiyon ile insert, update, delete ve select işlemlerimizi yapabiliriz.
Bu fonksiyon ile DataTable ın sadece ilk satırını okuyoruz.
insert.aspx.cs
görüldüğü gibi tek satırda insert olayını halletmiş oluyoruz.
Delete İşlemi
bg.idu("Delete from Kisiler Where KisiID=1");
Select İşlemi
select.aspx<div>
select.aspx.cs
select.aspx.cs kısmına da aşağıda ki gibi ilk satırı yazdıralım
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.
Select işlemlerinde işimize yarayacak bu fonksiyon belki de projelerimizde en çok kullanacağımız fonksiyon bu olacak.public DataTable DataTableGetir(string sql)
Esasında bu iki fonksiyon işimizi görür. Bu iki fonksiyon ile insert, update, delete ve select işlemlerimizi yapabiliriz.
Bu fonksiyon ile DataTable ın sadece ilk satırını okuyoruz.
insert.aspx.cs
görüldüğü gibi tek satırda insert olayını halletmiş oluyoruz.
Delete İşlemi
bg.idu("Delete from Kisiler Where KisiID=1");
Select İşlemi
select.aspx<div>
select.aspx.cs
select.aspx.cs kısmına da aşağıda ki gibi ilk satırı yazdıralım
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ı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ğiVeri 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
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
DataTable ile İşlem Yapmak için Fonksiyonu Oluşturalım
{ 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;
}
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];
}
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" />
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 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
}
}
Update İşlemiinsert 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.
<asp:Repeater ID="getir" runat="server">
<ItemTemplate>
<%#Eval("KisiAdi") %> <br />
</ItemTemplate>
</asp:Repeater>
</div>
using System;
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
DataRow dr = bg.DataRowGetir("Select *
From Kisiler");
ilk_satir.Text
= dr["KisiAdi"].ToString();
Yorumlar
Yorum Gönder
Yorumunuz alınmıştır. İncelenip yayımlanacaktır.