13 Temmuz 2013 Cumartesi

C# ile MS Access Bağlantısı




Yeni bir Console projesi oluşturuyorum. Sonra veritabanına bağlanmak için gerekli kütüphanelerimi ekliyorum.

using System.Data;
using System.Data.OleDb;

View sekmesinden Server Explorer a tıklayıp açıyorum. 



“Connect to Database” e tıklıyorum. Aşağıdaki gibi bir pencere açılıyor.




Data Source kısmında Microsoft Access Database File seçili olarak geliyor. Hemen yanındaki “Change” butonuna tıklayarak bağlanacağımız Database türünü değiştirebiliriz. Ben Access veritabanına bağlanacağım için bu kısımda değişiklik yapmıyorum. “Database File Name” kısmına geliyorum ve “Browse” ile dosyanın yolunu belirtiyorum. Sonra alt kısma geçiyorum ve kullanıcı adi , varsa şifremi yazıyorum. Eğer şifremiz yoksa şifre kısmını boş bırakıyorum. “Ok” demeden önce “Test Connection” butonuna tıklıyorum ve bağlantımın gerçekleşip gerçekleşmediğini kontrol ediyorum. “Test Connection succeeded” şeklinde bir uyarı alıyorum.




                Yeniden Server Explorer pencereme baktığımda Access dosyam eklenmiş durumda ve üzerinde fiş işareti var bu benim bağlantımın sağlandığını gösterir.

                Şimdi kod kısmına geçiyorum. Öncelikle kod kısmında da bağlantının kaynağını göstermem gerekiyor. Bunun için “Server Explorer” penceremde eklediğim Access dosyasının üzerine gelerek sağ tıklayıp “properties” diyerek özellikler kısmına geçiyorum. Buradaki “Connection String” kısmını olduğu gibi kopyalıyorum. (Provider … diye başlayan kısmı)Sonra aşağıdaki gibi kodumu yazıp kopyaladığım kısmı buraya yapıştırıyorum.

string byeri = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\\Users\\.......";

                Tırnaklar içerisine kopyaladığımızda ilk olarak tırnak fazlalığını gidermeliyiz , sadece iki tırnak arasında kalmalı.(yukarıdaki gibi) Sonra dikkat ederseniz “ \ ” kısımlarının altı çizili hale geldi. Bunların hepsini “  \\ ” seklinde düzeltiyorum. Bu işlemlerden sonra alt satıra geçiyorum ve 

       OleDbConnection con = new OleDbConnection(byeri);
       string sorgu = "select * from uyeler";
       OleDbCommand komut = new OleDbCommand(sorgu, con);
       con.Open();
       OleDbDataReader oku = komut.ExecuteReader();

yazıyorum. Öncelikle “OleDbConnection” ile database bağlantımı oluşturuyorum. “sorgu” ismindeki String ifadede de sorgu cümlemi yazıyorum. Veritabanından veri okuma-yazma işlemleri için “OleDbCommand” nesnesi oluşturuyorum. Hemen alt satırında bağlantıyı açıyorum. Veri okuyabilmem için “OleDbDataReader” ile oku adında bir nesne oluşturuyorum ancak burada eşitliğin karşı tarafında “ExecuteReader()” fonksiyonunu kullandığımıza dikkat edelim.

                Şimdi while() ile veri çekelim. Kodları aşağıdaki gibi yazıyorum

while (oku.Read())
            {
                Console.WriteLine(oku[1] + " " + oku[2]);
            }
            con.Close();

Burada “Read()” fonksiyonu ile okuma işlemini gerçekleştirdik. “oku[1]” seklindeki kullanımla da veritabanımda bulunan 1.sutundaki verileri, “oku[2]” ile de 2.sutundaki verileri döndermiş olduk. İşlem sonunda bağlantıyı “Close()” ile kapatıyoruz.Kodu çalıştırdığımda hata vermeden düzgün bir şekilde çalıştı.




Son olarak bu Access dosyası bizim projemizin bulunduğu klasör içerisine kopyalanmış durumdadır. Ayrıca program açık iken veritabanında işlemler yaparsınız visual studio da veritabanını “refresh” etmeyi unutmayalım.

Kodun Son Hali

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Data;
using System.Data.OleDb;

namespace Database
{
    class Program
    {
        static void Main(string[] args)
        {
            string byeri = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\\Users \\Hp\\Documents\\Visual Studio 2012\\Projects\\ConsoleApplication3\\ConsoleApplication3\\bin\\Debug\\deneme.accdb";
            OleDbConnection con = new OleDbConnection(byeri);
            string sorgu = "select * from uyeler";
            OleDbCommand komut = new OleDbCommand(sorgu, con);
            con.Open();
            OleDbDataReader oku = komut.ExecuteReader();
            while (oku.Read())
            {
                Console.WriteLine(oku[1] + " " + oku[2]);
            }
            con.Close();
        }
    }
}


0 yorum:

Yorum Gönder