JSF

JSF Dersleri-Veri Tabanından Kayıt Çekme

Merhabalar arkadaşlar. Bu yazımızda JSF ile veri tabanından nasıl kayıt çekileceğini göreceğiz. Önceki yazımızda kayıt eklemeyi öğrenmiştik. Ben yine o yazıdaki veritabanı ve tabloyu kullanacağım.

Veri tabanından kayıt çekerken biz bir sonuç kümesine (ResultSet) ihtiyaç duyarız. Bu sonuç kümesine veri tabanından dönen sonuç atanır ve biz de uygun metot ile ilgili sütunu alırız. Mesele ResulSet’imizin adı rs olsun ve yazar adalarını çekmek isteyelim. O zaman rs.getString(“Adi”); diyerek yazar adlarını almış oluruz. Tabi burada where koşulu kullanılmadığını ve SELCET * yapıldığını varsayarak böyle diyorum. Daha sonra bu sonuç kümesi içinden aldığımız değerleri bir listeye atarız. Dizi de kullanabiliriz ama bellek işgali gibi sebeplerden ötürü liste kullanmak daha mantıklı. Listeyi de bir dataTable ile ekrana basıcaz. Listeyi direk dataTable’ın value özelliğine atayarak kullanamıyoruz, bunun yerine bir var nesnesi tanımlayıp o nesne ile adeta bir döngü şeklinde kayıtları ekrana döküyoruz. Şöyle düşünebiliriz: Java sınıfı içindeki DataTable’ın value özelliğine atıyoruz, DataTable sanki kendi içinde for ya da while döngüsü işletiyormuşçasına bir var nesnesi ile tüm kayıtları ekra döker.

Veri tabanımız şu şekilde. Önceki yazıda yazdığımız uygulama ile yeni kayıtlar ekleyip bu hale getirebilirsiniz.

records

Kodlarımız da şu şekildedir. Yine açıklamalarını kod satırları içinde verdim.

kayitCek.xhtml Kodu

KayitCek.java Kodu

AdiAlaniPojo.java Kodu

Ekran Çıktısı

selectRecordPage

Bu yazıda da bu kadar arkadaşlar. Gelecek yazıda güncelleme (update) işlemine bakacağız. Görüşmek üzere.

  • i.ü c.e öğrencisi

    Editörde hangi fontu kullandınız?

    • İlkay Günel

      Merhaba.
      Yazı içinde crayon kod eklentisi ile kodlarımızı yazıyoruz.

  • Dursun POYRAZOĞLU

    hocam inputtextareadan gireceğim değeri sql sorgusuna nasıl ekleyebilirim mesela select * from deneme where donem = 2015-2016; gibi bir sorgu çalıştırmak istediğimde 2015-2016 yı kullanıcının ekrandan girmesini istediğimde SQL sorusuna nasıl eklemem gerekiyor. Paylaşımlarınız ve desteğiniz için çok teşekkür ederim

    • İlkay Günel

      Merhaba Dursun.
      Öncelikle bu durumun Sql injectiona sebep olma riski yüksek. Bunu gözönüne kodunu ona göre iyi yazman lazım.
      Eğer kişi inputTextAreaya 2015-2016 diye giriş yapacaksa sen java kodu içinde String sql =”select * from table where donem =? ”
      Deyip preparedStatement a ilgili değeri set edip kodu çalıştırırsan amacına ulaşırsın gibime geliyor.
      Ben de teşekkür ederim kolay gelsin. Olmazsa yine yorum at, daha detaylı bakarız.

  • anil

    Merhabalar, table şeklinde yüzlerce satıdan oluşan verilerim var ve bunlara bir süzgeç yapmak istiyorum. Yardımcı olabilir misiniz?
    mail : [email protected]

    • İlkay Günel

      Merhabalar.
      Nasıl bir süzgeçten bahsediyorsunuz? Biraz açabilir misiniz? Mesela PrimeFaces kütüphanesi kullanırsanız kolonlara özgü dinamik arama özelliği bile katabilirsiniz:
      http://www.primefaces.org/showcase/ui/data/datatable/columns.xhtml

      • anil

        Merhabalar, Örnekteki gibi yalnız daha sade olması gerek. Nasıl yapabilirim?
        Teşekkürler @lkaygnel:disqus

        • İlkay Günel

          Aptallığımı mazur görün, ben ne demek istediğinizi yine anlayamadım. Size yardımcı olmak istiyorum ama amacınızın ne olduğunu anlayamıyorum.

          • Estağfurullah. basitçe şöyle yalnız richfaces olması gerekiyor. Sade demek ise tek bir tane textbox bile olur yani tüm sütunlar için yapılmasına gerek yok.

          • İlkay Günel

            Richfaces daha önce hiç çalışmadığım için size yardımcı olamıyorum maalesef. PrimeFaces tarafta var istedikleriniz ama o da sizin işinize yaramıyor 🙂

          • Pekii mail adresinizi alsam bikaç hatam var jsf de belki yol gösterirsiniz. Teşekkürler

          • İlkay Günel

            [email protected] adresine yollayabilirsiniz.