mehmetduran.com - Paylaşmak Güzeldir...
Veritabanında Arama Yapma İşlemleri
Bu yazımda veritabanımızda bulunan bilgiler içinde arama yaparak istenilen sonucu bulma işlemini nasıl yapabileceğimizi anlatmaya çalışacağım. Veritabanında arama işlemi için sorgumuzda like ifadesini kullanıyoruz. Ayrıca aramanın hangi biçimde yapılacağını da % işareti ile belirleyebiliyoruz. Bu ifade ile aramamızı aranacak olan kelimeyi veritabanı içinde ilk harften itibaren yani soldan sağa, arada arama ifadesi yani aranacak ifade hernagi bir kelimenin içinde bulunuyorsa ve son olarak sağdan sola yani tersten arama. Şimdi bunları vereceğim bir örnekle açıklamaya çalışacağım.

Örneğimizde kullanacağımız veritabanı şu şekilde olacak:

Veritabanında Arama Yapma İşlemleri

Kodlarımız ise şu şekilde olacak:

    OleDbConnection baglanti;
    protected void Page_Load(object sender, EventArgs e)
    {
        baglanti = new OleDbConnection("provider=microsoft.jet.oledb.4.0; data source=" + Server.MapPath("~/App_Data/isimler.mdb"));
    }
 
    public void arama(string aranan)
    {
        string sondan_arama = "select * from isimler where isim like'%" + aranan + "'";
        string bastan_arama = "select * from isimler where isim like'" + aranan + "'%";
        string ortadan_arama = "select * from isimler where isim like'%" + aranan + "%'";
        //hangi arama türünü kullancaksak onu seçeceğiz. Ben örnekte ortadan aramayı kullandım.
        OleDbDataAdapter adaptor = new OleDbDataAdapter(ortadan_arama, baglanti);
        DataTable tablo = new DataTable();
        adaptor.Fill(tablo);
        GridView1.DataSource = tablo;
        GridView1.DataBind();
    }
    protected void Button1_Click(object sender, EventArgs e)
    {
        arama(TextBox1.Text);
    }

Arama yapmak için bu kodları kullanacağız. Ancak arama yöntemi için % ifadesi kullanımına dikkat etmeliyiz. Kodlarda tüm arama yöntemleri için sorguları ayrı ayrı belirttim. Ayrıca yaptığım arama işlemlerinin her biri için ekran görüntüsü ise şöyle olacak:

Veritabanında Arama Yapma İşlemleri

Böylece veritabanı içinde arama yapma yöntemlerini görmüş olduk.
İyi Çalışmalar!
Mehmet Duran 01 Eylül Pazartesi 2008 21 56588 4,4
Bookmark and Share
Bu Yazıyı Değerlendirin.
Konuyla İlgili Olabilecek Diğer Yazılar Sql'de Datetime Alanından Yılı ve Ayı Belirleme Fonksiyonu Fck Editör'de Türkçe Karakter Sorununa Çözüm MySql'de limit ve rand Kullanımı Ternary Operatör Kullanımı (koşul ? doğru : yanlış) Linq ile Dizindeki Dosyaları Gösterme
Yorumlar
Yorum Yaz
RSS Yorum Takibi
Özgür 16 Ekim Perşembe 2008 01:31 #1
Hocam makale süper. ama diyelim tüm veritabanında arama yapacaz. o nasıl olacak? Sorguda ve kodlamada nasıl bir yöntem izlememiz lazım?
Mehmet Duran 16 Ekim Perşembe 2008 08:41 #2
Merhaba! Tüm veritabanında arama yapmak için yine aynı yöntem kullanılabilir. Ancak tüm veritabanında arama yapılmasının kullanılır bir olay olduğunu sanmıyorum.
tolga 29 Ekim Çarşamba 2008 13:01 #3
asp.net 2.0 site hazırladım aramada aynı kodları kullandım. İı Şş vb. büyük küçük harf şeçiyor ve o harfler geçince bulmuyor? yardım edebilirseniz sevinirim tolgacanca@msn.com
Mehmet Duran 29 Ekim Çarşamba 2008 13:05 #4
Merhabalar! Böyle bir sorunu web.config dosyasında dil ile ilgili bir ayarlama yaptıysanız bu yüzden alıyor olabilirsiniz. Eğer böyle ayar yaptıysanız bu sorunu küçük değişiklikle düzeltebilirsiniz.
yıldıray yiğit 18 Aralık Perşembe 2008 12:12 #5
hocam çok sağolun iki gündür uğraşıyordum emeğinize sağlık
Doğan 11 Nisan Cumartesi 2009 17:55 #6
Merhabalar bu calisma Access uzerinden denenmis hocam denemedim ama calisacagindan eminim :) ben bu calismayi MySql ile yapmayi istiorum bu konuda yardimci olabilirmisiniz. İyi calismalar
Mehmet Duran 11 Nisan Cumartesi 2009 19:02 #7
Merhaba. Mysql ile yapmak için sadece access için tanımlanan nesneleri (oledbconnection, oledbdatareader vb.) mysql için (mysqlconnection, mysqldatareader vb.) tanımlamalısın. Mysql`e bağlanmak için gerekli dll dosyasını mysql`in sitesinden indirebilirsin. Sorgulama ise tamamen aynı.
neslin 14 Mayıs Cuma 2010 13:52 #8
anlatımınız güzel yalnız biraz daha ayrıntıya girebilir misiniz. ben access e yeni başladım ve bir kütüphane programı yapmaya çalışıyorum da
Mehmet Duran 14 Mayıs Cuma 2010 15:10 #9
Merhaba. Bence buradaki bilgi başlangıç için yeterli. Daha detaylı işlemler için kendin uğraşmalı ve takıldığın yerlerde sorularını sormalısın.
ALİM KESKİN 16 Mayıs Pazar 2010 23:04 #10
Aramayı başarılı şekilde yapıyorum . Fakar Gridview Yazi Tablosunun içindeki bütün Veriler geliyor.yani ben sadece yazinin başlıgını çağırmak istiyorum ve başlıga tıklayınca o yazının içerine gitmesini istiyorum ?
Mehmet Duran 17 Mayıs Pazartesi 2010 22:55 #11
Merhaba. Bu tarz birşeyi sorman yerine biraz araştırsan çok rahat yapabilirsin diye düşünüyorum. Sadece başlık çekmen için sql sorgusunda * yerine sütun adı kullanmalısın. Link oluştururken de kullandığın data kontrolünün html bölümünde a tagını kullanmalı ve bu taga href değeri vermen yeterli olur. Sitemdeki birçok örnekte bu yapı var. Birkaçını incelemen faydalı olabilir.
Alim KESKİN 17 Mayıs Pazartesi 2010 23:22 #12
data nesnesının html bolumunu anlayamadım source kısmına bakıyorum fakat html ile ılgılı bı tag yok :S
Mehmet Duran 17 Mayıs Pazartesi 2010 23:54 #13
Yani burada bahsettiğim alan data kontrollerinin itemtemplate bölümü. Ya da bu bölüm yerine döngü ile kendin html yapıyı oluşturabilirsin.
Gözde 27 Mayıs Perşembe 2010 15:13 #14
merhaba. Anlatım çok güzel tam aradığım şey! Yaklaşık 1 aydır araştırıyorum fakat hala olumlu sonuç alamamaktayım. Ben bu özelliği access üzerinden c# da kullanmak istiyorum. Kodları denedim. GridView1.DataBind(); kısmında hata veriyor. Databind diye bir kod yok. Yardımcı olabilir misiniz? Teşekkürler.
Mehmet Duran 28 Mayıs Cuma 2010 01:07 #15
Merhaba. DataBind satırına gelmeden önce hata var sanırım. Ancak kodları görmeden hatanının nedeni ve çözümü hakkında birşey söylemek zor. Kodları görmek gerekiyor.
ALİM KESKİN 08 Haziran Salı 2010 19:00 #16
Mehmet abi ben ortadan aramayı kullandım.Yanlız aramada tek bir secenek değilde iki tane seçenek için kodlarda nasıl bi değişiklik lazım.Seçenek derkende; Yazi tablomdaki sadece baslik değil baslik ve icerik kısmında araması için burda ne yapmam lazım select * from yazi where baslik like'" + aranan + "'%";
Mehmet Duran 08 Haziran Salı 2010 23:09 #17
Bunun için where koşuluna ikinci bir parametre eklemelisin. Sorgun şu yapıda olmalı :
select * from yazi where icerik like '%" + aranan + "%' and baslik like '%" + aranan + "%'";
Yalnız burada parametrik çalışmalısın. Bu şekilde sql injection'lara maruz kalırsın. (Eğer iki sütundan birindeki sonuç yeterli olur diyorsan koşulların arasındaki mantık ifadesi and değil or olmalı.)
Özgür Gündüz 01 Ağustos Pazar 2010 13:17 #18
'Microsoft.ACE.OLEDB.12.0' provider is not registered on the local machine. hatası alıyorum nasıl duzeltebilirim :/
Mehmet Duran 02 Ağustos Pazartesi 2010 10:17 #19
Hatayı aldığın bilgisayarda Access 2007 tanımlı değil. Bunun için hata aldığın makineye Access 2007 provider'ı tanımlanmalı. Eğer makina senin ise Access 2007'i kurmalısın. Makina senin değilse hosting makinası ise hosting yetkilileri ile iletişime geçmelisin.
enes 14 Ekim Perşembe 2010 16:14 #20
hocam dataGridView.databind(); satırında hata veriyor. lütfen yardımcı olun. System.Windows.Forms.DataGridView' does not contain a definition for 'DataBind' and no extension method 'DataBind' accepting a first argument of type 'System.Windows.Forms.DataGridView' could be found (are you missing a using directive or an assembly reference?)
Mehmet Duran 18 Ekim Pazartesi 2010 15:51 #21
@enes, yaptığın proje windows projesi mi yoksa web projesi mi? Web projesi ise büyük ihtimalle dll eksikliğinden bu hatayı alıyorsundur.
İsim :
Site :
Yorum :

Buradan bu yazıya ait yorumları RSS olarak takip edebilirsiniz.

Bu servis ile yazılara eklenen yorumları RSS ile takip ederek konu ile ilgili başkaları tarafından yapılan yorumları veya konuyla ilgili sorduğunuz sorulara verilen cevapları görebilirsiniz.
Şans bir uğraşının eseridir.
Bölümler
Yazılar
Arşiv
Arama
Linkler
Site İçi Arama
Son Zamanlarda Ne Yapıyorum ?
İstatistikler - Araçlar - Reklam
İstatistikler
Sayaç
Mehmet Duran | mehmetduran.com | Copyright © 2009