30 Mayıs 2007 Çarşamba

Exeli DataBase Olarak nasıl Kullanırız.

Hemen hemen heryerde karşımıza çıkan bir sorudur Exel'i database olarak kullanabilirmiyiz yada nasıl kullanırız.
Cevabı aslında çok basit: Evet kullanbiliriz Peki nasıl.? işte şöyle =>

Önce basit formatlı bir excel dökümanı oluşturalım.;

Şimdi bu excel dökümanını ADO.Net tarafından erişilebilir bir tablo haline getirelim. Bu kısım çok önemli sakın kormayın:) oldukça basit bir işlem.

Microsoft Excel'de çalıştığımız alanı seçili hale getirdikten sonra Insert>Name>Define komutunu kullanarak hazırladığımız bu tabloya bir isim ataması yapıyoruz.






Artık tanımladığımız tablo ADO.Net tarafından erişilebilir hale geldi. Bu aşamadan sonra Microsoft Excel dökümanımızı kapatabilir ve OleDb işlemlerimizi gerçekleştirebiliriz.

şüphesiz tüm veritabanı sistemlerinde olduğu gibi önce bir Connection(bağlantı) oluşturmamız gerekiyor. Bunun için OLEDB Providerlarını kullanacağız.

private void button1_Click(object sender, EventArgs e)
{
//OleDbConnection'ımızı tanımlarken ConnectionString'e dikkat
//Burada klasik Access veritabanı bağlantısına benzer bir yapı izliyoruz ancak en son
//kısımda yer alan Extended Properties=Excel 8.0; satırı bizim bir excel dosyası kullan-
//dığımızı belirtiyor.

OleDbConnection Baglanti = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\\Documents And Settings\\yunus\\Desktop\\ADONet_Excel_Uygulama\\TBL_ARAC.xls; Extended Properties=Excel 8.0;");

DataSet objDS = new DataSet();
//OleDbdataAdapter nesnesine sanki normal bir tablo çalıştırıyormuşuz gibi bir sorgu ifadesi
//tanımlıyorum. Bunu yukarıda seçtiğim alan için bir tablo ismi vermiş olmama borçluyum.

OleDbDataAdapter objDA = new OleDbDataAdapter("Select * from TBL_ARAC", Baglanti);
objDA.Fill(objDS, "MyAracTable");

dataGridView1.DataSource = objDS.Tables["MyAracTable"];
}

Yazdığımız 5 satırlık C# kodu ile Excel veritabanımıza bağlantı kurmuş olduk.



Buraya kadar veriyi almak ve ekrana getirmek için uğraştık.
Şimdi aynı veriyi bir datareader ile okuyalım ve filtreleme yapalım. Ardından da veriyi update etme kısmını yapalım;


Yeni bir uygulama yaratıyorum.

Şimdi Form'un Load olayında "Renault" markasına sahip otomobili bu ekrana getirelim.

public static OleDbConnection Baglanti = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\\Documents And Settings\\yunus\\Desktop\\ADONet_Excel_Uygulama2\\TBL_ARAC.xls; Extended Properties=Excel 8.0;");

OleDbDataReader Okuyucu;

private void Form1_Load(object sender, EventArgs e)
{
OleDbCommand Komut = new OleDbCommand("Select * from TBL_ARAC where Marka = 'Renault'", Baglanti);
Baglanti.Open();
Okuyucu = Komut.ExecuteReader();

if (Okuyucu.Read())
{
textBox1.Text = Okuyucu["Marka"].ToString();
textBox2.Text = Okuyucu["Model"].ToString();
textBox3.Text = Okuyucu["MaxHiz"].ToString();
textBox4.Text = Okuyucu["YYili"].ToString();
}
else
{
MessageBox.Show("#### OKUNACAK BİLGİ BULUNAMADI ####");
}

}



Ve şimdi sırada bu kaydı güncelleyecek kod bloğunda.

private void button1_Click(object sender, EventArgs e)
{
OleDbCommand Komut = new OleDbCommand("Update TBL_ARAC Set Marka = '" + textBox1.Text + "', Model = '" + textBox2.Text + "', MaxHiz = '" + textBox3.Text + "', YYili = '" + textBox4.Text + "' where ID = " + Convert.ToInt16(Okuyucu["ID"].ToString()), Baglanti);

Komut.ExecuteNonQuery();
MessageBox.Show("#### KAYIT GÜNCELLENDİ ####");
}





Bu şekilde exelden veri çekmeyi güncellemeyi özetlemiş olduk.




Hiç yorum yok: