17 Mart 2013 Pazar

Veritabanı - 2... Combobox Kullanarak Alan Seçimi İle Aratma Yapmak...


Veritabanı  - 1 dersin de kullanmış olduğumuz okul isimli access dosyası üzerinden yine bir uygulama yapacağız... Bunun için aşağıdaki form tasarımını sağlayın... Bu sefer ki amacımız comboboxtan seçilen alan adına göre aratma yapmak ve yine bilgileri ekrana getirmek... 


Seçim alanı için kullanacağımız combobox ın içeriğini, üzerindeki ok işaretine tıklayarak edit items kısmına alan isimlerini sırası ile giriyoruz... Aşağıdaki gibi olacaktır.. Buraya gireceğimiz alan isimleri ile okul dosyamızdaki alan isimleri birebir aynı olmaz ise çalışmamız hata verecektir... 


Programımız çalıştığı zaman aşağıdaki gibi bir görüntü olacaktır... 

SQL ifadesi içerisinde form elamanlarını kullanmak istediğimiz zaman önce " karakteri ile SQL ifadesinden çıkıyoruz... Sonra aralarında bağlantı olması için aynı console.write komutundaki gibi + karakterini koyup form elamanımızı yazıyoruz... Nasıl SQL ifadesinden çıktıysak aynı mantıkla geri dönüyoruz... Önce +, sonra ise " karakterlerini yerleştirip SQL ifadesine devam ediyoruz... 

Aslına bakarsanız Console.Write komutunda değişkenleri kullanmak ile aynı mantık... 

Aşağıdaki örnekte alan isimleri combobox1 den gelmektedir... Alan isimlerinde Türkçe karakter veya boşluk ifadeler kullanıyorsanız [] karakterleri arasında alan isimlerini çağırın... Örneğin [Isim] veya [Ad Soyad] gibi... Bu şekilde olunca alan ismi olduğu anlaşılır ve program devam eder... Biz buradaki örnekte alan isimlerini Combobox1 de tuttuğumuz için ["+combobox1.text+"] komutunu kullandık... 


Programımızın kodları ise aşağıdaki gibi olacaktır...

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Data.OleDb;  // Veritabanı için OLEDB kütüphanesini açıyoruz...

namespace arama_2
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        //ÖRNEK - 2:  COMBOBOX İLE SEÇİLEN ALAN ADINA GÖRE, 
        // TEXTBOX'A GİRİLEN DEĞER ARANIYOR ve TEXTLERDE BİLGİLER GÖSTERİLİYOR...
         
        // Bu kısımda tanımlama database bağlantısı yapılınca bütün alt programlarda kullanılabiliyor...
        // Database bağlantısını yapıyoruz ve SQL komut nesnesini tanımlıyoruz...
        OleDbConnection baglanti = new OleDbConnection("Provider=Microsoft.Jet.Oledb.4.0; Data Source=okul.mdb");
        OleDbCommand komut = new OleDbCommand();
        
        private void button1_Click(object sender, EventArgs e)
        {
            // Veritabanını açıyoruz... 
            baglanti.Open();

            /*Like komutu belirlenen alan adına göre verilen değerleri araştırır... Kaç adet bulunursa hepsini gösterir...
             * Combobox'ta seçmiş olduğumuz alan adına göre arama yaptırılıyor... Sadece o alanda bulunan hücrelere
             * bakılarak, Textbox'da bulunan değer aranıyor... Burada bulunan karakterler çok önemlidir... 
             * SQL komutlarının haricinde bir ifade eklenecek ise " " işaretleri arasında verilir ve + + işaretleri ile eklenir...
             */
            komut.CommandText = "SELECT * FROM ogrenci WHERE  [" + comboBox1.Text + "] Like '%" 
                + textBox1.Text + "%'";
            komut.Connection = baglanti;

            OleDbDataReader oku = komut.ExecuteReader(); //Aldığımız bilgilerimizi depomuza atıyoruz...
            while (oku.Read()) // Sonuna kadar okutma yapıyoruz...  Aynı olduğu anda textlere değerleri yazıdıyoruz...
            {
                textBox2.Text = oku[0].ToString();
                textBox3.Text = oku[1].ToString();
                textBox4.Text = oku[2].ToString();
                textBox5.Text = oku[3].ToString();
            }

            oku.Close();         // Depo değişkenimizi ve veritabanımızı kapatıyoruz...
            baglanti.Close(); 
        }
    }
}