Bu makalemizde Access veritabanı kullanarak Türkçe-İngilizce ve İngilizce-Türkçe çevirimi yapan bir sözlük uygulaması oluşturacağız. Tabi siz dilerseniz yapılanları uygulayarak ve uygun bir veritabanı oluşturarak Türkçe Sözlük haline de getirebilirsiniz. Uygulamamızda sorgulama işlemlerini DataView kullanarak performanslı bir şekilde gerçekleştireceğiz.Örneğimize geçelim.
Aşağıda örneğimizin bitmiş halinden bir kesit bulunmakta. Bu gif dosyasında ne tür işlemler yapacağımız hakkında bir fikir sahibi olacağınızı düşünüyorum.
Projemize başlayalım artık. Formumuzda 2 adet textBox ve 1 adet listBox kullanacağız. textBox1′ de girilen harflere göre gerçek zamanlı olarak ilgili kelimelerin listboxta görüntülenmesini sağlayacağız. Bu listbox üzerinde listelenen kelimenin üzerine tıklayarak, karşılığı olan kelimenin textBox2’de görüntülenmesini sağlayacağız.
Veritabanı olarak dbSozluk.accdb Access dosyasını kullanacağız. Veritabanına ait tablo ve alan isimleri alttaki gibi olacak.
Formumuz ise;
Formumuzu yukarıdaki şekilde hazırladıktan sonra kodlarımıza geçelim. Öncelikle veritabanı bağlantımızı oluşturacağız.
1 2 3 | using System.Data.OleDb; |
ekleyerek başlıyoruz. Daha sonra public olarak kullanacağımız;
1 2 3 4 5 | OleDbConnection con; OleDbDataAdapter da; DataSet ds; |
nesnelerimizi oluşturuyoruz.
Form yüklendiğinde Dataset2 imizi doldurarak devam edelim. Bunun için Form_Load event’ ına aşağıdaki gibi kodlarımızı yazalım.
1 2 3 4 5 6 7 8 9 10 | private void Form1_Load(object sender, EventArgs e) { con = new OleDbConnection("Provider=Microsoft.ACE.Oledb.12.0;Data Source=dbSozluk.accdb"); da = new OleDbDataAdapter("SElect *from sozluk", con); ds = new DataSet(); con.Open(); da.Fill(ds, "sozluk"); } |
Şimdi de textbox kontrolüne girilen karakterlere göre eş zamanlı olarak filtreleme işlemini gerçekleştireceğiz. Bu işlemi DataView kullanarak ve RowFilter özelliğini kullanarak gerçekleştireceğiz. Kodlarımızın eş zamanlı olarak çalışmasını sağlamak için textBox_Changed olayını kullanacağız.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | private void textBox1_TextChanged(object sender, EventArgs e) { listBox1.Items.Clear(); textBox2.Clear(); DataView dv = ds.Tables[0].DefaultView; dv.RowFilter = "turkce Like '" + textBox1.Text + "%'"; if (dv.Count > 0) { for (int i = 0; i < dv.Count; i++) { listBox1.Items.Add(dv[i].Row["turkce"]); } } } |
Son adıma geçiyoruz. Bu adımda Listbox kontrolünde tıklamış olduğumuz kelimenin karşılığını textBox2 de görüntüleyeceğiz. Bu işlem için kodlarımızı listBox1_SelectedIndexChanged olayına yazacağız.
1 2 3 4 5 6 7 8 | private void listBox1_SelectedIndexChanged(object sender, EventArgs e) { DataView dv = ds.Tables[0].DefaultView; dv.RowFilter = "turkce ='" + listBox1.SelectedItem.ToString() +"'"; textBox2.Text = dv[0].Row["ingilizce"].ToString(); } |
Kodlarımızı tamamlamış olduk. Çalışır haldeki ekran görüntüsü şu şekilde olacaktır.
Örneği İngilizce/Türkçe Seçeneği için RadioButton ekleyerek genişletebilirsiniz.Kod kısımlarında ise değişecek olan tek şey turkce yerine ingilizce, ingilizce yazan yerlere ise turkce yazmak olacaktır. Takıldığınız bölüm olursa Yorum kısmından iletebilirsiniz. Facebook sayfamızdan bizi takip ederek daha fazla örneğe ulaşabilirsiniz.
Kodlarımızın tamamı şu şekilde olacaktır.
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 | using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Data.OleDb; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; namespace sozluk { public partial class Form1 : Form { public Form1() { InitializeComponent(); } OleDbConnection con; OleDbDataAdapter da; DataSet ds; private void Form1_Load(object sender, EventArgs e) { con = new OleDbConnection("Provider=Microsoft.ACE.Oledb.12.0;Data Source=dbSozluk.accdb"); da = new OleDbDataAdapter("SElect *from sozluk", con); ds = new DataSet(); con.Open(); da.Fill(ds, "sozluk"); } private void textBox1_TextChanged(object sender, EventArgs e) { listBox1.Items.Clear(); textBox2.Clear(); DataView dv = ds.Tables[0].DefaultView; dv.RowFilter = "turkce Like '" + textBox1.Text + "%'"; //dv.RowFilter = string.Format("Ad LIKE '{0}%'", textBox5.Text); if (dv.Count > 0) { for (int i = 0; i < dv.Count; i++) { listBox1.Items.Add(dv[i].Row["turkce"]); } } } private void listBox1_SelectedIndexChanged(object sender, EventArgs e) { DataView dv = ds.Tables[0].DefaultView; dv.RowFilter = "turkce ='" + listBox1.SelectedItem.ToString() +"'"; textBox2.Text = dv[0].Row["ingilizce"].ToString(); } } } |
İndirme linkine tıkladığımda erişime ihtiyacınız var diyor.
hocam setup adını nasıl değiştirebiliriz yardımcı oluşurmusunuz
Elinize sağlık
Teşekkür ederim kardeşim 🙂 Projenin veri tabanı çok işime yarayacak. Sadece veri tabanı için bile ayrı yazı oluşturabilirsin bence 🙂
projeyi imdirme seçeneği olmasa olmaz abi tşk
Ahmet hocam listbox’da bir öğeye tıkladığımızda veri tabanında varsa resmini picturebox’da nasıl gösterebiliriz
http://www.yazilimkodlama.com/programlama/c-veritabanina-resim-yolu-ekleme-ve-pictureboxta-gosterme/
Yukarıdaki örneğe benzer birşey mi yapmak istiyorsunuz?
evet hocam benziyor sizin bu yaptığınız sözlükte kelime arandığında listbox’a aradığımız kelimelere benzer kelimeler listeleniyor tıkladığımızdada türkçe anlamını veriyor türkçe anlamının yanında varsa birde access database’den resim bilgisini alıp picturebox’da göstersin bunu nasıl koda ceviririz
Ahmet Hocam buna resim ve ses nasıl ekleriz aradığımız kelimeye basınca kelimenin okunuşunu veren sesi ve ilgili kelimenin varsa resmi gözüksün
Aşağıdaki konuları inceleyebilirsiniz.
http://www.yazilimkodlama.com/programlama/c-ile-metni-sesli-okutma-ornegi/
http://www.yazilimkodlama.com/programlama/c-veritabanina-resim-yolu-ekleme-ve-pictureboxta-gosterme/
bu formda http://www.yazilimkodlama.com yazıyo onu nasıl kaldırırım ?
Form uzerine tikladiktan sonra properties penceresinde text ozelliginden degistirebilirsin.
Abi biraz yardımcı olabilirmisin
Aşağıdaki linkten ulaşabilirsin.
http://www.yazilimkodlama.com/programlama/c-turkce-ingilizce-ingilizce-turkce-sozluk-yapimi/
merhaba, ingilizce türkçe seçeneğini combobox la yapmak mümkünmü?
Yapabilirsiniz. Basit bir if-else yapısı kullanacaksınız ve sql sorgusunu diğer seçenek için düzenleyeceksiniz.
Abi biraz yardımcı ola bilirmisin
Aşağıdaki linkten ulaşabilirsin.
http://www.yazilimkodlama.com/programlama/c-turkce-ingilizce-ingilizce-turkce-sozluk-yapimi/
Elinize sağlık, database e başka bir dil için alan eklemek isityorum nasıl yaparım hocam?
Aynı anda diğer dilde görünecek mi yoksa bir radiobutton vs. bi seçimmi yapılacak?
indirme linki varmı
Buradan indirebilirsiniz.
yukardaki örneğini yapmaya çalıştım olmadı örneği varsa atabilirmisin lütfen
burda dili arttırmak istersek. nasıl yaparız. yani 4-5 dil daha eklecek olsak.
veritabanında diğer alanlarıda ekleyerek seçime göre gerekli sorguyu çalıştırabilirsiniz.