Makale Özeti

WideDB .NET için geliştirilmiş database işlemlerini çok kolay ve hızlı bir şekilde yapmamızı sağlayan, açık kaynak kodlu bir geliştirme aracıdır. Microsoft SQL, Oracle ve Access üzerinde denenmiş ve çalışırlığı onaylanmıştır. Bu ne demektir? Sadece tek bir kodla bütün bu databaseler üzerinde; bağlantı cümlesini (ConnectionString) değiştirerek, işlem yapabilirsiniz.

Makale

 
WideDB İle DataBase İşlemleri
Database işlemleri WideDB kullanarak nasıl daha basit hale getirilir?
 
 
WideDB  nedir?
 WideDB .NET için geliştirilmiş database işlemlerini çok kolay ve hızlı bir şekilde yapmamızı sağlayan, açık kaynak kodlu bir geliştirme aracıdır. Microsoft SQL, Oracle ve  Access üzerinde denenmiş ve çalışırlığı onaylanmıştır. Bu ne demektir? Sadece tek bir kodla bütün bu databaseler üzerinde; bağlantı cümlesini (ConnectionString) değiştirerek, işlem yapabilirsiniz.
WideDB kodlarını: http://sourceforge.net/projects/widedb adresinden temin edebilirsiniz.
  
Adres Defterimizi VisualStudio 2003 ve C# dilini kullanarak yapacağız.
Projemizde DataBase olarak MSAccess kullanacağız, fakat aynı alanları kullanarak oluşturdugunuz MSSql ve Oracle databaselerinde de projemizin çalışacağını ututmayalım,
Bunun için sadece ConnectionString’i değiştirmemiz yeterli olacaktır.
 
AdresDefteri.mdb adında yeni bir database oluşturdum.
İçerisinde kayitlar diye bir tablo yaratıp.
Alanlarını
 
[kayitlar]
ID – AutoInc – PrimaryKey
Adi – Text[50]
Tel – Text[11]
DogumYeri – Text[50]
Email – Text[90]
 
Olarak belirleyip projemin oldugu dizine kaydettim.
 
Visual Studio 2003 Programımızı açıyoruz.
 
File / New / Project ‘den yeni bir proje oluşturuyoruz ve adını adresdefteri veriyoruz.
 
 
 
İkinci aşamada ilk Formumuzun üzerine
1 adet DataGrid
2 adette buton koyuyoruz.
 
1.     
           
 
           1. Buton ile yeni kayıt gireceğimiz formu çağıracagız.
2.      2. Butonu ise uygulamayı kapatmak için kullacağım.
 
 
Yeni Kayıt bilgilerimi gireceğim formu hazırlamak için
SağTarafta Solition Explorer penceresi içerisinde
Projemin Adı (adresdefteri) üzerinde sağ tuş yapıp
Add / Add Windows Form  seçeneğinden Projeme
ikinci bir form ekliyorum.
 
 
Yeni Kişi girmek için kullanacağım forma  
4 adet TextBox
2 Adet de Buton koyuyorum.
 
 
 
Ve projemde kullanmak üzere WideDB’yi referans olarak ekleyeceğim.
Bu iş için tekrar Solition Explorer altında References kısmında  sağ tuş yapıyorum.
Açılan pencereden Add Reference diyerek Wakiza.WideDB.dll dosyamın oldugu yeri oldugu dosyayı gösterip Open butonuna basarak işlemi tamamlıyorum.
 
 
 
İki formumunda koduna
using Wakiza.WideDB; referansını eklemeyi unutmuyorum.
 
Şimdi ilk olarak.
 
Formumuzun Load olayında WideDB ‘ye ConnectionStringi Set edecegiz.
Ve bütün uygulama boyuca bu ConnectionString gecerli olacak.
Formun boş bir yerinde çift tıklıyoruz ve aşağıdaki kodu yazıyoruz.
 
       private void Form1_Load(object sender, System.EventArgs e)
             {
                    // Connection Stringimizi tanımlıyoruz.
string localpath = System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().GetName().CodeBase);
                    localpath = localpath.Replace("file:\\","");
                    string constr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="+localpath+"\\adresdefteri.mdb;User Id=admin;Password=;";
                    Wakiza.WideDB.dbConfig.instance.setConnectionString(constr);
             }
 
 
Yeni Kayıt Eklemek için kullanacağım butona çift tıklayarak Yeni Kayıt formumun açılmasını sağlayacak kodu yazıyorum.
 
 
             // Yeni Kayıt Butonu
             private void button1_Click(object sender, System.EventArgs e)
             {
                    Form2 form2 = new Form2();
                    form2.ShowDialog();
             }
 
Form2 ye geçip orada da yeni kayıt için gerekli kodlarımı yazıyorum.
Form2 üzerinde ekle butonuma çift tıklayıp, kayıt ekleme işlemini yapacak kodlarımı yazıyorum.
 
 
            // yeni kayıt ekleyecek buton.
            private void button1_Click(object sender, System.EventArgs e)
            {
                  // database işlemlerinde kullanmak üzere kisi adında
//bir nesne yaratıyorum.
                  // tablo ismini ve primary key alanımı belirtiyorum.
//Bu nesneyi yaratırken.
                  dbObject kisi = dbFactory.create("kayitlar","ID");
                  // dbObject nesnemin setter methodu 2 deger alıyor
//tablodaki Alan ismi ve degeri
                  //
                  kisi.setter("Isim",textBox1.Text);
                  kisi.setter("Tel",textBox2.Text);
                  kisi.setter("DogumYeri",textBox3.Text);
                  kisi.setter("Email",textBox4.Text);
                  // nesnemin save methodu set ettiğim degerleri
//database kaydediyor.
                  kisi.save();
                  // eger nesnenin.ID 'si 0 ise yada set edilmemiş* ise
//yeni bir kayıt olarak ekleniyor.
                  // eger ID databasede olan bir degerle eşleşirse
//update olarak işlem görüyor ve kaydı değiştiriyor.
            }
 
WideDB ile Kaydı Düzenlemek.
            dbObject kisi = dbFactory.create("kayitlar","ID");
kisi objemi yarttıktan sonra.
            kisi.setter("ID",5);
ID mi set ediyorum, artık ID’si 5 olan kisimin diger bilgilerini set ettikten sonra tekrar save() methodumu çağıracagim.
Örnek kod ID’si 5 olan kullanıcının Tel ve DogumYeri bilgilerini Update ediyor.
            // ID’si 5 olan kisinin bilgilerini update edecek kod.
            private void btnedit_Click(object sender, System.EventArgs e)
            {
                 
                  dbObject kisi = dbFactory.create("kayitlar","ID");
                  kisi.setter("ID",5);
// nesnemize kaydın hazırdaki bilgilerini yüklüyoruz.
      kisi.load();
                  kisi.setter("Tel","902521111111");
                  kisi.setter("DogumYeri","Çorum");
                  kisi.save();
            }
WideDB ile Kaydı Silmek.
 
            // ID’si 5 olan kisiyi silecegim...
            private void btnedit_Click(object sender, System.EventArgs e)
            {
                 
                  dbObject kisi = dbFactory.create("kayitlar","ID");
                  kisi.setter("ID",5);
                  kisi.delete();
            }
delete() methodu false veya true deger döner. Kayıt silinmisse true hata olusmus yada kayıt silinememişse false degeri doner.
 
 
WideDB ile Kayıta Erişmek.
 
Önceden girdiğiniz kayıtlara erişmek istediğinizde, önce nesnemize kisinin  ID’sini set ediyoruz, daha sonra nesnemizin load() methodunu çağırıyoruz.
Form2 üzerine bu iş için extra bir buton koydum.
Adi textine girdiğim kişiyi database de arıyor kaydı varsa bilgilerini ekrana getiriyor.
 
 
            private void button3_Click(object sender, System.EventArgs e)
            {
                  //once db object nesnemde kullanmak üzere aradiğim kişinin idsini buluyorum.
                  //arama işleminde dbQuery nesnesini kullanacağım.
                  int kisiid = Wakiza.WideDB.dbQuery.queryInt("SELECT ID FROM Kayitlar WHERE Isim = '"+textBox1.Text+"'");
                  if(kisiid==0)
                  {
                        //kisi bulunamamış ise mesaj vererlim.
                        MessageBox.Show("Kayit Bulunamadi");
                        return;
                  }
                  else
                  {
                        dbObject kisi = dbFactory.create("kayitlar","ID");
// dbObject nesnemin setter methodu 2 deger alıyor Alan ismi ve degeri
                         
                        kisi.setter("ID",kisiid);
                        kisi.load();
 // load methodu ile database de ki bilgiler nesneme yukleniyor.
// artık onlara erişebilirim.
//getter methodları kullanmak için sadece alanın adını vermeniz yeterli.
                        textBox1.Text =   kisi.getterString("Isim");
                        textBox2.Text = kisi.getterString("Tel");
                        textBox3.Text= kisi.getterString("DogumYeri");
                        textBox4.Text = kisi.getterString("Email");               
                  }
            }
WideDB ile SQL Komutlar İşletmek.
 
WideDB kullanarak SQL komutlarınıda çalıştırabilirsiniz.
Bunun için kullanacağınız sınıf  WideDB.dbQuery
dbQuery altındaki methodlardan;
 
·         execute() : Geriye etkilenen rowların degerini integer olarak döner.
Örn:  Wakiza.WideDB.dbQuery.execute("DELETE FROM Kayitlar WHERE ID=4")
 
·         query() : Geriye DataSet döner.
Örn: Wakiza.WideDB.dbQuery.query("SELECT * FROM Kayitlar")
Bunu uygulamamızda Kayitlarımızı listelemek için kullanırsak.
 
Form1 ‘e geri dönüyoruz.
Gridimizi dolduracak procedure  yazıyoruz.
 
            private void grididoldur()
            {
                  DataSet ds = dbQuery.query("SELECT * FROM Kayitlar");
                  dataGrid1.DataSource = ds.Tables[0].DefaultView;
      }
 
Ve formumuzun onload() olayında bu procedure da çalıştırıyoruz.
 
·         queryString() : Sorgu ile istediğimiz degeri String olarak döner.
Örn:  dbQuery.queryString("SELECT Isim FROM Kayitlar WHERE ID=1")
 
·         queryInt() : Sorgu ile istediğimiz değeri Integer olarak döner.
Örn:  dbQuery.queryInt("SELECT ID FROM Kayitlar WHERE Isim=’Ali Can’")
 
 
 
 
 
 
Tekrar görüşmek üzere.
Sorularınız ile ilgili mail yazabilirsiniz.
 
Serkan İÇER
serkan@serkan.biz
 
 
Adres Defteri