Csharp ile Access Veritabanı Bağlantısı Yapmak

Veritabanları bildiğiniz gibi veriyi depolamak, istenilen bilgiyi sorgulayarak kolayca arayıp bulmak amacıyla oluşturulmuş yapılardır. Veritabanı kullanmayan program yok gibidir, üretilen yazılımların büyük bölümü mutlaka bir veritabanı kullanır. Veritabanı yazılımdan bağımsız olduğu için istenilen programlama dili ile kolayca kullanılabilir. Örneğin Access veritabanına ister Java, ister C#, isterseniz Phyton gibi dillerle erişebilirsiniz. 

Tek kullanıcının kullanacağı Access, Dbase, Paradox gibi veritabanlarından tutun da ORACLE, SYBASE, IBM DB2, SQL Server, MySQL, PostgreSQL gibi milyonlarca kullanıcının kullanacağı birçok veritabanı mevcuttur. Bu veritabanlarından bazıları ücretsiz, bazıları ücretlidir. 

Microsoft'a ait C# programlama dili ile tüm veritabanlarına bağlanabilirsiniz. Fakat Microsoft'a ait Access ve SQL Server gibi veritabanlarından erişim daha kolay ve pratikdir. Access veritabanı daha önce bahsettiğimiz gibi kişisel kullanımlarda daha çok tercih edilir. Microsoft SQL Server ise birden fazla kullanıcının yazılımlarda tercih edilir.

Şimdi C# ile Access veritabanına bağlanıp küçük bir uygulama yapalım.

Önce Access veritabanını açarak vtrehber isminde bir veritabanı(database) oluşturunuz. Aşağıdaki gibi bir tablo oluşturarak ismini tblrehber olarak veriniz. Tabloyu oluşturan başlıklardan her birine alan adı (field) ismini veriyoruz. Burada bir rehberde olması gereken kişinin Adı, Soyadı, Telefonu gibi bilgileri depolamak için farklı alanlar oluşturduk ve böylece Tablonun yapısını tanımlamış olduk.  Dikkat edeceğiniz  bir nokta da Veri Türü (Data Type) kısmıdır, bu kısım girilecek verinin tipine göre ayarlanır. Kişinin adını, soyadını, doğum yeri gibi bilgilerini hatırlarsanıuz, Metin olarak saklıyor ve C#'da String tipinde tanımlıyorduk. Başka veri tipleri de mevcuttur, örneğin tarihleri Tarih/Saat(Date/time) veri tipinde saklıyoruz.

Tüm tablolarda her kaydı diğerinden ayıran eşsiz bir alana ihtiyaç vardır. Burada rehberID isimli bir alan tanımladık, bu alana Birincil Anahtar(primary key) adını veriyoruz.. Bu alan her kayıt eklendiğinde 1,2,3 gibi artarak değerler alacak. Her kayıt girildiğinde otomatik artması için veri türünü Otomatik Sayı (Auto Increment) olarak verdik.





Şimdi yapısını oluşturduğumuz bu tabloya, aşağıdaki  verileri giriyoruz. Bu verileri daha sonra programlama dili içinden gireceğiz. 

 
Şimdi Microsoft Visual Studio'da bir  Windows Form Application Projesi açıyoruz.  Projeyi açtıktan sonra otomatik olarak bir form oluşturacaktır, Formun kodlarına girip namespace kısmına aşağıdaki gibi using System.Data.OleDb kütüphanesini dahil ediyoruz. Bu kütüphane Access tablosuna bağlanmamız için ilk adımdır. 



Forma aşağıdaki gibi 3 tane TextBox, 3 tane Label bir tane button, alta da bir GridView nesnesi ekliyoruz. Textbox ve Button nesnesini Standart sekmesinden, GridView nesnesini Data sekmesinden sürükle bırak ile form üzerine ekleyebilirsiniz. Görüntü aşağıdaki gibi olacaktır.



Bu bölümde Adı bilgisinin gireceğiniz metin kutusuna txtAdi, Soyadı bilgisini gireceğimize txtSoyadi, ev telefonu gireceğimiz metin kutusuna da txtEvTelefon ismini verdik. Kaydet butonuna da btnKaydet ismini verdik.

Şimdi gelelim veritabanı bağlantısına, bağlantı yapmak için aşağıdaki nesneleri tanımlıyoruz.

        OleDbConnection baglanti;
        OleDbDataAdapter adaptor;
        OleDbCommand komut;
        DataSet verikumesi  ;

Yukarıda gördüğünüz 4 nesneden ilki olan OleDbConnection aracılığı ile veritabanına bağlantı için gerekli sürücüleri ve parametreleri tanımlıyoruz. 

OleDbDataAdapter sınıfı veri kaynağı ile sistem belleği arasında bir katman oluşturularak hızlı, verimli veri alış verişini sağlamaktadır. DataAdapter sınıfları veri kaynağından aldıkları verileri bağımsız katman nesneleri olan DataTable ve DataSet nesnelerinin doldurulmasından sorumludurlar. 

OleDbConnection aracılığı ile bağlandığımız veritabanına Seçme(SELECT), Ekleme(INSERT), Güncelleme(UPDATE) ve Silme(DELETE) için gerekli SQL cümleciklerini göndermemizi sağlıyor. 

Şimdi aşağıdaki kodlara bir göz atalım.

 1) baglanti = new OleDbConnection("Provider=Microsoft.ACE.Oledb.12.0; Data Source=vtrehber.accdb");
      2) adaptor = new OleDbDataAdapter("Select * from tblrehber", baglanti);
      3) verikumesi = new DataSet();
      4) baglanti.Open();
      5) adaptor.Fill(verikumesi, "tblrehber");
      6) dataGridView1.DataSource = verikumesi.Tables["tblrehber"];
      7) baglanti.Close();

(1) nolu satırda, OleDbConnection aracılığı ile Access veritabanımıza bağlantıyı yapıyoruz ve dosyamızın yolunu veriyoruz. Burada kullandığım veritabanı adı vtrehber.accdb isminde. Uygulamamın çalıştığı EXE dosyası ile aynı klasörde, farklı klasörde ise yolunu belirtmeniz gerekiyor. 

Daha sonra (2) nolu satırda OleDbDataAdapter ile veritabanından verileri çekip bilgisayarın belleğinde bir katman halinde tutmak için hazırlık yapıyoruz.  Parametre olarak kullandığımız Select * from tblrehber ile tblrehber isimli tablomuzdaki tüm verileri çekip getirmesini istiyoruz.

(3) nolu satırda bir verikümesi (DataSet) oluşturuyoruz. (4) nolu satırda, artık parametrelerini ayarladığımız bağlantımızı açıyoruz. Programı çalıştırırken bu satırda program durursa, bu satırdan önce yazdığınız kodları gözden geçriniz, özellikle veritabanının yolunu doğru yazdığınızdan emin olunuz.

(5) nolu satırda  adaptör nesnemizi Fill metodu ile tblrehber den çektiğimiz verilerle dolduruyoruz. (6) nolu satırda forma sürüklediğimiz GridView nesnesinin içini çektiğimiz verilerle dolduruyoruz.

Yukarıdaki işlemlerin uygulamamız ilk çalıştığında yapılmasını istiyoruz. Uygulamamızda tek Form olduğu için Form nesnemizin Load() olayına yazdığımızda, program çalıştığında hemen bağlanacaktır. Bu kodları birden fazla yerde kullanacağımız için bir Metod haline getirdim istediğim yerde bu metodu çağıracağım. Metodun ismine de VeriDoldur() ismini verdim.

Bu işlemlerden sonra Form üzerine yerleştirdiğimiz btnKaydet butonunun üzerine çift tıklayarak aşağıdaki kodları yazıyoruz.

// OleDbCommand ile yeni bir komut göndermek için hazırlık yapıyoruz.
komut = new OleDbCommand();

// Bağlantımızı açıyoruz.
baglanti.Open();

//komutumuzun hangi bağlantı yoluyla çalıştırılacağını belirtiyoruz.
komut.Connection = baglanti;

// Insert Into SQL komutu ile tablomuza formdaki verileri parametreli şekilde gönderiyoruz.
           komut.CommandText = "insert into tblrehber (adi,soyadi, evtelefon) values (@pAdi, @pSoyadi, @pEvTelefon)";
 
// Süslü A diğer adıyla @ işareti ile başlayan kısım parametreli değişkenleri ifade ediyor
// Biz burada isimlendirirken p ile başlattık, siz istediğiniz ismi verebilirsiniz.

   
komut.Parameters.AddWithValue("@pAdi", txtAdi.Text);

komut.Parameters.AddWithValue("@pSoyadi",txtSoyadi.Text);
komut.Parameters.AddWithValue("@pEvTelefon",txtEvTelefon.Text);

//komutumuzu çalıştırıyoruz.
komut.ExecuteNonQuery();

//bağlantımızı kapatıyoruz
baglanti.Close();

// Eklediğimiz verilerin gösterilmesi için VeriDoldur() metodunu çağırarak GridView için tazeliyoruz.
VeriDoldur();    



C# ile Access veritabanındaki verileri alıp listelemek ve Yeni Kayıt eklemek için gerekli kodların tamamı aşağıdadır,

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
 
using System.Data.OleDb;
 
 
namespace Rehber
{
    public partial class FrmKayitEkle : Form
    {
     
        OleDbConnection baglanti;
        OleDbDataAdapter adaptor;
        OleDbCommand komut;
        DataSet verikumesi  ;
 
        //Veritabanından alıp GridView nesnesine akataracak
        void VeriDoldur()
        {
      baglanti =
   new OleDbConnection("Provider=Microsoft.ACE.Oledb.12.0; Data Source=vtrehber.accdb");
      adaptor = new OleDbDataAdapter("Select * from tblrehber", baglanti);
      verikumesi = new DataSet();
      baglanti.Open();
      adaptor.Fill(verikumesi, "tblrehber");
      dataGridView1.DataSource = verikumesi.Tables["tblrehber"];
      baglanti.Close();
 
        }
 
        public FrmKayitEkle()
        {
            InitializeComponent();
        }
 
        private void btnKaydet_Click(object sender, EventArgs e)
        {
            komut = new OleDbCommand();
            baglanti.Open();
            komut.Connection = baglanti;
           komut.CommandText = "insert into tblrehber (adi,soyadi, evtelefon) values (@pAdi, @pSoyadi, @pEvTelefon)";
 
            komut.Parameters.AddWithValue("@pAdi", txtAdi.Text);
            komut.Parameters.AddWithValue("@pSoyadi",txtSoyadi.Text);
            komut.Parameters.AddWithValue("@pEvTelefon",txtEvTelefon.Text);
 
            komut.ExecuteNonQuery();
            baglanti.Close();
            VeriDoldur();   
            
        }
 
        private void FrmKayitEkle_Load(object sender, EventArgs e)
        {
            VeriDoldur();
        }
 
 
    }
}
 

Şimdilik bu kadar, ekleme ve listeleme yaptık. İlerleyen örneklerde güncelleme ve silme işlemlerini de farklı veritabanları üzerinde yapacağız.

Mutlu kodlamalar,
Mayıs, 2015
Oğuzhan TAŞ
Bookmark and Share