Bizim projemiz bir gezi anketi projesidir. Bu proje access veri tabanı yardımıyla veri tabanından veri çekme, veri tabanına veri ekleme, veri güncelleme ve veri silme işlemlerini içeriyor. Öncelikle “ gezianket “ adında bir Access tablosu oluşturuyoruz. Bu Access veri tablosu aşağıda verilmiştir.
Proje için iki adet form kullandık. Form 1’i oluşturmak için bir adet dataGridView, beş adet button, beş adet label, üç adet textBox ve iki adet comboBox kullanıyoruz. Form 1’e ad olarak GEZİ ANKETİ adını verdik ve arka plan özelliklerinden rengini belirledik (Özellikler kısmında bulunan backcolor yardımıyla yapılıyor. ) . Ekran alıntısı aşağıdaki gibidir.
Verilerin dataGridView’ de görünmesinin birkaç yolu vardır biz kodlar yardımıyla yaptık. Kodlar aşağıda verilecektir ve açıklama satırıyla bu durum bir kez daha açıklanacaktır. Form 2 oluşumu için ise bir adet label, bir adet textBox ve bir adet button kullanılmıştır. İsim olarak ÖNERİLER adı verilmiştir. Arka plan, form 1 ile aynı şekilde belirlenmiştir.Form 2’nin ekran alıntısı aşağıdaki gibidir.
Her iki form içinde simge olarak aşağıdaki görsel belirlenmiştir. Simge özellikler kısmında bulunan Icon yardımıyla yapılıyor.
Access veri tablomuz ilk etapta boştur. Şimdi kodlar yardımıyla gerekli veri tabanı işlemlerini gerçekleştirelim. İlk olarak global alanda access bağlantımızı oluşturuyoruz.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
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 Gezi_Anketi { public partial class Form1 : Form { public Form1() { InitializeComponent(); } OleDbConnection baglanti = new OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\\Users\\Lenovo\\Desktop\\Database41.accdb"); //ADRESTE TEK SLASH HATA VERİR BU YÜZDEN ALDIĞIMIZ ADRESTE TEK SLASHLARI ÇİFT HALE GETİRMELİYİZ OleDbCommand komut; OleDbDataAdapter adtr; DataTable tablo = new DataTable(); |
Veri tabanı oluşturulduktan sonra, GÖSTER adındaki butonumuza çift tıklayarak access tablomuzda ki verileri görmemizi sağlayan kodları yazıyoruz.Kodlar aşağıda açıklamalarıyla birlikte verilecektir.
1 2 3 4 5 6 7 8 9 10 11 12 |
private void verigster() { //TABLOYU DATAGRİDDE GÖSTERMEK İÇİN GEREKLİ KODLARIMIZ tablo.Clear();//tabloyu temizler baglanti.Open();//baglanti adındaki access dosyasını açar komut = new OleDbCommand("select *from gezianket ", baglanti); adtr = new OleDbDataAdapter(komut); adtr.Fill(tablo); dataGridView1.DataSource = tablo; baglanti.Close();//baglanti adındaki access dosyasını kapatır } |
Access veri tabanına kod eklemek için EKLE adlı butonumuza çift tıklıyoruz ve aşağıdaki kodları yazıyoruz. Kodlar açıklama satırlarıyla açıklanmıştır.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
private void button3_Click(object sender, EventArgs e) { baglanti.Open();//baglanti adındaki access dosyasını açar komut = new OleDbCommand("insert into gezianket(TC, AD, SOYAD, CİNSİYET, BÖLGE) values ('" + textBox1.Text + "','" + textBox2.Text + "','" + textBox3.Text + "','" + comboBox1.Text + "','" + comboBox2.Text + "')", baglanti); komut.ExecuteNonQuery(); baglanti.Close();//baglanti adındaki access dosyasını kapatır verigster();//verileri göster fonksiyonunu çağırır.yukarıda tanımlanmıştır. textBox1.Text = " ";//textBox ı temizler textBox2.Text = " ";//textBox ı temizler textBox3.Text = " ";//textBox ı temizler comboBox1.Text = " ";//comboBox ı temizler comboBox2.Text = " ";//comboBox ı temizler } |
Form 1 deki SİL butonuyla tablodaki verileri siliyoruz.Silme işlemi için SİL butonuna çift tıklayarak aşağıdaki kodları yazıyoruz.
1 2 3 4 5 6 7 8 |
private void button2_Click(object sender, EventArgs e) { baglanti.Open();//baglanti adındaki access dosyasını açar komut = new OleDbCommand("delete from gezianket where TC ='" + textBox1.Text + "'", baglanti); //TC referans alınmıştır komut.ExecuteNonQuery(); //veri akışını sağlar baglanti.Close();//baglanti adındaki access dosyasını kapatır verigster();//verileri göster fonksiyonunu çağırır.yukarıda tanımlanmıştır. } |
Access veri tabanındaki veriler üzerinde değişiklik yapmak için GÜNCELLE butonuna çift tıklıyoruz ve aşağıdaki kodları yazıyoruz.
1 2 3 4 5 6 7 8 9 10 11 12 13 |
private void button6_Click(object sender, EventArgs e) { baglanti.Open();//baglanti adındaki access dosyasını açar komut = new OleDbCommand("update gezianket set TC='" + textBox1.Text + "',AD ='" + textBox2.Text + "',SOYAD ='" + textBox3.Text + "',CİNSİYET ='" + comboBox1.Text + "',BÖLGE ='" + comboBox2.Text + "' where TC='" + textBox1.Text + "'", baglanti); komut.ExecuteNonQuery(); baglanti.Close();//baglanti adındaki access dosyasını kapatır verigster();//verileri göster fonksiyonunu çağırır.yukarıda tanımlanmıştır. textBox1.Text = " ";//textBox ı temizler textBox2.Text = " ";//textBox ı temizler textBox3.Text = " ";//textBox ı temizler comboBox1.Text = " ";//comboBox ı temizler comboBox2.Text = " ";//comboBox ı temizler } |
Burada unutmamamız gereken kısım bağlantının ( baglanti) her bir komut için açılıp kapatılması gerektiğidir. Bunu veri tabanının sadece işlem süresince açık kalması için yapıyoruz. Form 1 için son buton olan ÖNERİYE GİT butonu ise formlar arası geçişi sağlar. Formlar arası geçiş aşağıdaki kodlar yardımıyla yapılmaktadır.
1 2 3 4 5 6 |
private void button5_Click(object sender, EventArgs e) { Form2 form2 = new Form2();//öneriler kısmına gitmek için yeni form oluşturulmuştur. form2.Show(); this.Hide(); } |
Form 2 deki amaç anketi yapan kişilere Türkiye illeri arasında öneride bulunmaktır. Bu işlem random yardımıyla yapılıyor. Form 2 de ÖNERİYİ GÖR butonuna çift tıklayarak aşağıdaki kodları yazıyoruz.
1 2 3 4 5 6 7 8 9 10 11 |
private void button1_Click(object sender, EventArgs e) { string[] sehirler = { "ADANA","ADIYAMAN","AFYONKARAHİSAR","AĞRI","AMASYA","ANKARA","ANTALYA","ARTVİN","AYDIN","BALIKESİR","BİLECİK","BİNGÖL","BİTLİS","BOLU","BURDUR","BURSA","ÇANAKKALE","ÇANKKIRI","ÇORUM","DENİZLİ","DİYARBAKIR","EDİRNE","ELAZIĞ","ERZİNCAN","ERZURUM","ESKİŞEHİR","GAZİANTEP","GİRESUN","GÜMÜŞHANE","HAKKARİ","HATAY","ISPARTA","MERSİN","İSTANBUL","İZMİR","KARS","KASTAMONU","KAYSERİ","KIRKLARELİ","KIRŞEHİR","KOCAELİ","KONYA","KÜTAHYA","MALATYA","MANİSA","KAHRAMANMARAŞ","MARDİN","MUĞLA","MUŞ","NEVŞEHİR","NİĞDE","ORDU","RİZE","SAKARYA","SAMSUN","SİİRT","SİNOP","SİVAS","TEKİRDAĞ","TOKAT","TRABZON","TUNCELİ","ŞANLIURFA","UŞAK","VAN","YOZGAT","ZONGULDAK","AKSARAY","BAYBURT","KARAMAN","KIRIKKALE","BATMAN","ŞIRNAK","BARTIN","ARDAHAN","IĞDIR","YALOVA","KARABÜK","KİLİS","OSMANİYE","DÜZCE" };//dizinin elemanları tanımlanmıştırk. Random rast = new Random();//random şehir atanması için yeni random ifade tanımlandı int c;//c isminde bir int ifade tanımlanmıştır. c = rast.Next(0, 81);//0 ile 81arasında rastgele değer vercek string d;//d isminde bir string ifade tanımlanmıitır. d = sehirler[c];//c dizisi içinde seçilen rastgele eleman d stringine atanır. textBox2.Text = d;//textBox2.Text e d stringine gelen rastgele değeri yazdırır. } |
Aşağıda form 1 için bütün kodlar verilmiştir.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 |
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 Gezi_Anketi { public partial class Form1 : Form { public Form1() { InitializeComponent(); } OleDbConnection baglanti = new OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\\Users\\Lenovo\\Desktop\\Database41.accdb"); //ADRESTE TEK SLASH HATA VERİR BU YÜZDEN ALDIĞIMIZ ADRESTE TEK SLASHLARI ÇİFT HALE GETİRMELİYİZ OleDbCommand komut; OleDbDataAdapter adtr; DataTable tablo = new DataTable(); //data table tablosu oluşturuluyor private void verigster() { //TABLOYU DATAGRİDDE GÖSTERMEK İÇİN GEREKLİ KODLARIMIZ tablo.Clear();//tabloyu temizler baglanti.Open();//baglanti adındaki access dosyasını açar komut = new OleDbCommand("select *from gezianket ", baglanti); adtr = new OleDbDataAdapter(komut); adtr.Fill(tablo); dataGridView1.DataSource = tablo; baglanti.Close();//baglanti adındaki access dosyasını kapatır } //Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\\Users\\Lenovo\\Desktop\\Database41.accdb private void button1_Click(object sender, EventArgs e) { //tablodaki verileri göstermek için yazılan kodları çağırıyoruz verigster(); } private void Form1_Load(object sender, EventArgs e) { // TODO: Bu kod satırı 'database41DataSet.gezianket' tablosuna veri yükler. Bunu gerektiği şekilde taşıyabilir, veya kaldırabilirsiniz. this.gezianketTableAdapter.Fill(this.database41DataSet.gezianket); } private void button3_Click(object sender, EventArgs e) { baglanti.Open();//baglanti adındaki access dosyasını açar komut = new OleDbCommand("insert into gezianket(TC, AD, SOYAD, CİNSİYET, BÖLGE) values ('" + textBox1.Text + "','" + textBox2.Text + "','" + textBox3.Text + "','" + comboBox1.Text + "','" + comboBox2.Text + "')", baglanti); komut.ExecuteNonQuery(); baglanti.Close();//baglanti adındaki access dosyasını kapatır verigster();//verileri göster fonksiyonunu çağırır.yukarıda tanımlanmıştır. textBox1.Text = " ";//textBox ı temizler textBox2.Text = " ";//textBox ı temizler textBox3.Text = " ";//textBox ı temizler comboBox1.Text = " ";//comboBox ı temizler comboBox2.Text = " ";//comboBox ı temizler } private void button2_Click(object sender, EventArgs e) { baglanti.Open();//baglanti adındaki access dosyasını açar komut = new OleDbCommand("delete from gezianket where TC ='" + textBox1.Text + "'", baglanti); //TC referans alınmıştır komut.ExecuteNonQuery(); baglanti.Close();//baglanti adındaki access dosyasını kapatır verigster();//verileri göster fonksiyonunu çağırır.yukarıda tanımlanmıştır. } private void button6_Click(object sender, EventArgs e) { baglanti.Open();//baglanti adındaki access dosyasını açar komut = new OleDbCommand("update gezianket set TC='" + textBox1.Text + "',AD ='" + textBox2.Text + "',SOYAD ='" + textBox3.Text + "',CİNSİYET ='" + comboBox1.Text + "',BÖLGE ='" + comboBox2.Text + "' where TC='" + textBox1.Text + "'", baglanti); komut.ExecuteNonQuery(); baglanti.Close();//baglanti adındaki access dosyasını kapatır verigster();//verileri göster fonksiyonunu çağırır.yukarıda tanımlanmıştır. textBox1.Text = " ";//textBox ı temizler textBox2.Text = " ";//textBox ı temizler textBox3.Text = " ";//textBox ı temizler comboBox1.Text = " ";//comboBox ı temizler comboBox2.Text = " ";//comboBox ı temizler } private void button5_Click(object sender, EventArgs e) { Form2 form2 = new Form2();//öneriler kısmına gitmek için yeni form oluşturulmuştur. form2.Show(); this.Hide(); } } } |
Form 2′ nin bütün kodları aşağıda verilmiştir.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 |
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; namespace Gezi_Anketi { public partial class Form2 : Form { public Form2() { InitializeComponent(); } private void Form2_Load(object sender, EventArgs e) { } private void button1_Click(object sender, EventArgs e) { string[] sehirler = { "ADANA","ADIYAMAN","AFYONKARAHİSAR","AĞRI","AMASYA","ANKARA","ANTALYA","ARTVİN","AYDIN","BALIKESİR","BİLECİK","BİNGÖL","BİTLİS","BOLU","BURDUR","BURSA","ÇANAKKALE","ÇANKKIRI","ÇORUM","DENİZLİ","DİYARBAKIR","EDİRNE","ELAZIĞ","ERZİNCAN","ERZURUM","ESKİŞEHİR","GAZİANTEP","GİRESUN","GÜMÜŞHANE","HAKKARİ","HATAY","ISPARTA","MERSİN","İSTANBUL","İZMİR","KARS","KASTAMONU","KAYSERİ","KIRKLARELİ","KIRŞEHİR","KOCAELİ","KONYA","KÜTAHYA","MALATYA","MANİSA","KAHRAMANMARAŞ","MARDİN","MUĞLA","MUŞ","NEVŞEHİR","NİĞDE","ORDU","RİZE","SAKARYA","SAMSUN","SİİRT","SİNOP","SİVAS","TEKİRDAĞ","TOKAT","TRABZON","TUNCELİ","ŞANLIURFA","UŞAK","VAN","YOZGAT","ZONGULDAK","AKSARAY","BAYBURT","KARAMAN","KIRIKKALE","BATMAN","ŞIRNAK","BARTIN","ARDAHAN","IĞDIR","YALOVA","KARABÜK","KİLİS","OSMANİYE","DÜZCE" };//dizinin elemanları tanımlanmıştırk. Random rast = new Random();//random şehir atanması için yeni random ifade tanımlandı int c;//c isminde bir int ifade tanımlanmıştır. c = rast.Next(0, 81);//0 ile 81arasında rastgele değer vercek string d;//d isminde bir string ifade tanımlanmıitır. d = sehirler[c];//c dizisi içinde seçilen rastgele eleman d stringine atanır. textBox2.Text = d;//textBox2.Text e d stringine gelen rastgele değeri yazdırır. } } } |
Aşağıda form 1’in her bir butonu için uygulamalar yapılacaktır.
Accesste veri tabanındaki verileri göstermek için GÖSTER butonu faaliyeti aşağıdaki gibidir.
Accesste veri tabanına veri eklemek için EKLE butonu faaliyeti aşağıdaki gibidir.
Accesste veri tabanından veri silmek için SİL butonu faaliyeti aşağıdaki gibidir.
Accesste veri tabanındaki veri üzerinde değişiklik yapmak için için GÜNCELLE butonu faaliyeti aşağıdaki gibidir.
Form 2 için çalışma mantığı aşağıdaki gibidir.
Uygulamamıza buraya tıklayarak ulaşabilirsiniz.
HAZIRLAYANLAR;
BEYZA NUR KILIÇ
AYŞE YILDIRIM