4 Ocak 2017 Çarşamba

C# ile Access Veritabanı Bağlantısı ve Sorgu

C# ile Access Veritabanı Bağlantısı ve Sorgu


Merhaba arkadaşlar bir önceki paylaşımımızda Access ve SQL sorgu ile bilgi vermiştik. Şimdi bu sorgulama bilgisini C# ta bir proje oluşturarak gözlemleyelim.

   Şimdi C# uygulamasını bildiğinizi varsayarak anlatmaya başlayayım.


  Uygulamamıza çok basit bir arayüz yapalım. Uygulama açılınca tüm liste gözüksün. Sırala butonuna basınca ise 2 tarih arasında bize kayıtları göstersin.


   Uygulamanın Form_Load olayında yani uygulama ilk açıldığında tüm listeyi aktarması için yazın komut ;

  private void Form1_Load(object sender, EventArgs e)
        { 
            OleDbConnection baglanti = new             OleDbConnection("Provider=Microsoft.ACE.OleDb.12.0; data source=database.accdb");
            OleDbDataAdapter da = new OleDbDataAdapter("SELECT ad,soyad,dtarih,ktarih,sehir FROM veri", baglanti);
            DataSet ds = new DataSet();
            baglanti.Open();
            da.Fill(ds, "veri"); 
            dataGridView1.DataSource = ds.Tables["veri"];
            baglanti.Close();
        }

Uygulama sırasında "Sırala" butonunun click olayında yani butona tıklandığında başlangıç ile bitiş tarihi arasındaki kayıtları bize gösterir. Bunun için yazılan komut ise ;

 private void btnSirala_Click(object sender, EventArgs e)
        {
            OleDbConnection baglanti = new OleDbConnection("Provider=Microsoft.ACE.OleDb.12.0; data source=database.accdb");

            OleDbDataAdapter da = new OleDbDataAdapter("SELECT ad,soyad,dtarih,ktarih,sehir FROM veri WHERE dtarih>Format(" 
            + '"' + Convert.ToString(dateBaslangic.Value) + '"' + "," + '"' + "dd.mm.yyyy" + '"' + ") AND dtarih<Format(" + '"' 
            + Convert.ToString(dateBitis.Value) + '"' + "," + '"' + "dd.mm.yyyy" + '"' + ") ORDER BY ad", baglanti);

            DataSet ds = new DataSet();
            baglanti.Open();
            da.Fill(ds, "veri");
            dataGridView1.DataSource = ds.Tables["veri"];
            baglanti.Close();
        }
şeklinde yazılır.


Uygulamamızı çalıştırdığımızda tablomuza tüm veriler aktarılıyor.
Sırala butonuna basınca ise 2 tarih arası kayıtları bize gösterecektir.


Microsoft Access Veri Tabanı Kullanımı

Microsoft Access Veri Tabanı Kullanımı


Merhaba arkadaşlar şimdi Access Veri Tabanı ile tablo oluşturmayı, kayıt tutmayı ve bu kayıtları SQL Server ile ekleme , silme , güncelleme , tablo çağırma gibi işlemleri göreceğiz.



Şimdi resimdeki gibi Tablo butonuna tıklayarak yeni tablo oluşturuyoruz.


Tablo oluşturduktan sonra tabloya sağ tıklayıp "Desing View" butonuna tıklayarak oluşturacağımız tablonun sütunların isimlerini adetlerini belirliyoruz.


Teker teker başlıkları yazarken kayıt tarihini otomatik almasını , yeni bir kayıt oluştururken sistemin tarihini direk vermesini istiyorsanız "Default Value" değerine "=Date()" yazmanız yeterlidir. Ayrıca ID kısmında AutoNumber seçilir ve Primary Key olarak seçilir. Her eklenen sütunda yeni ID verir. Bir önceki satırı silseniz bile en son kaldığı yerden ID vermeye devam eder. Bu ID bizim TC Kimlik Numaramız gibi bir şeydir. Herkeste farklıdır.


Başlıkları yazdıktan sonra "Design View" butonuna tıklayarak tablonun görünümüne geçiyoruz. Sonra manuel olarak 10 tane kayıt ekleyelim. Sonra "Query Wizard" butonuna tıklayarak tablo çağırma için gerekli bir form oluşturuyoruz.


En üst seçeneği seçerek ileri diyoruz.


Karşınıza gelen seçeneklerde ">>" butonuna tıklayıp "ileri" butonuna basarak "finish" diyoruz. Karşımıza yukarıdaki gibi default bir SQL bir yazı var. Bu yukarıdaki "Select" ile "From" arasında teker teker başlıkları yazmış. Biz bütün tabloları içermesi için bütün başlıkları girmek yerine "*" işareti koyarak bütün başlıkları almış oluruz. 

   Daha iyi anlayabilmek için "SELECT id , ad FROM veri" şeklinde bir sql sorgu yazarsak veri tablosundaki tüm id ve ad başlıklarının altındaki kayıtları alır ve size gösterir.

"SELECT * FROM veri" şeklinde bir sql sorgu yazarsak veri tablosundaki tüm başlıklarının altındaki kayıtları alır ve size gösterir.


Görsel olarak görelim. Yukarıdaki resimdeki gibi bir sorgu yazınca
"Run" butonuna tıklıyoruz ve aşağıdaki sonucu görüyoruz.


Şimdi tüm tabloda adı "Ferhat" olan veya şehri "Erzurum" olan herkesi tabloda göster diyebileceğimiz bir sorgu yazalım.


Bu kodu yazdıktan sonra sonuç;


Şimdi ise bize gösterilen kayıtların sorgusu şu şekilde olsun;
     -Öğrenci olduğunu belirten bir checkbox ekleyelim,
     -Doğum tarihi 10.01.1990 ve 10.01.1999 tarihleri arasındaki kayıtları,
     -Öğrenci olan kayıtları,
     -Gösterilen kayıtların sıralaması ise ada göre olmasını istediğimiz bir sorgu yazalım.

SELECT * FROM veri WHERE dtarih > Format("10.01.1990","dd.mm.yyyy") AND dtarih < Format("10.1.1999","dd.mm.yyyy") AND ogrenci = true ORDER BY ad ;


şeklinde yazdığımız sql sonucu ;



şimdi bu sorguyu açmak gerekirse (SELECT * FROM  veri) -> Tüm veri tablosundaki ( WHERE) -> sorgu için gerekli parametredir. Buradaki sorguyu dönüş olarak 0-1 gibi düşünebilirsiniz. Yani bundan sonra gelen gelen sonuç 0 olursa satırı göstermez. Sonuç 1 olursa sonucu gösterir.( dtarih > Format("10.01.1990","dd.mm.yyyy") ) -> burada yazılı olan sorgu şu şekildedir; dtarih başlığı altındaki kayıtlardan format içine yazılan tarihten büyükse tabloya geçişine izin verilir ve S1 = 1 olur (AND ) -> bu ifadenin anlamı bir önceki sorgu dönüşü 1 ve sonraki sorgunun dönüşü 1 olursa tabloya aktarmasına izin verir.  dtarih < Format("10.1.1999","dd.mm.yyyy")-> S2 =1 AND (ogrenci = true)->S3 = 1 burada ise ogrenci sütunundaki kutucuk tikli ise true , tiksiz ise false anlamına gelir. Bizde diyoruz ki öğrenci olan kişileri bize göster. ( ORDER BY ad) -> burada ise sütunları ada göre sırala sorgusunu yazdık. Şimdi net anlamak için S1 * S2 * S3 = 1 ise bu sütunu tabloda size gösterir.
S1 * S2 * S3 = 0 ise bu sütunu tabloda size göstermez. Yani sorguda "and" sorgusu içinde herhangi biri 0 ise tabloda göstermez.

Şimdiki sorgumuzda ise tabloda adı içinde "e" olan ve doğum tarihi 19.04.1995 ten büyük olan herkesi tabloda göster sorgusunu yazalım ;

SELECT * FROM veri WHERE ad LIKE "*e*" AND dtarih > Format("19.04.1995","dd.mm.yyyy");

şeklinde bir sorgu yazıyoruz ve sonuç ;



Yeni bir kayıt eklemek için kullanılan sql sorgu ;

INSERT INTO veri (ad,soyad,dtarih,sehir) VALUES ("Yeni", "Kayıt" ,Format("19.04.1992" , "dd.mm.yyyy") , "Eskişehir")
şeklinde olur. Tablo adından sonra hangi sütunlara değer yazacağımızı belirliyoruz ve VALUES yazısından sonraki parantezde ise sıra ile ilk parantezdeki değerlerin yerlerine yazarak yeni bir yeni bir satır oluşturur.

Varolan kaydı güncellemek için kullanılan sql sorgu ;

UPDATE veri SET ad="İsim" WHERE ad="Yeni" şeklinde olur.
Burada demek istenilen ad sütunundaki değere "isim" yaz deniyor where den sonrada adı üzerinde nerede olduğunu belirtmek için ad sütununda isimi yeni olanları gösteriyoruz. Yani adı "Yeni" olan herkesin adını "İsim" olarak değiştirilir.

Varolan kaydı silmek için kullanılan sql sorgu ;

DELETE FROM veri WHERE ad="İsim" şeklinde olur.
Burada demek istenilen ad sütunundaki değerde "isim" yazan herkesi sil demek olur.