Merhaba arkadaşlar. Bu yazıda veri tabanında güncelleme işlemine bakacağız. Güncelleme işlemini yaparken bir datatable kullanacağız. Önce bu datable üzerinde değişikliği yapıp geçici olarak değişikliği kayıt edecek daha sonra bu değişikliği veri tabanına aktaracağız.Ekran çıktılarımız kodlarımızın altındır. Onları daha net görmek için üstüne tıklayınız. Hadi başlayalaım. 🙂
Veri tabanındaki kayıtlarımızın listesi aşağıdaki resimde mevcut. Resimde Muhammet Murat Tutar yazarımızın alanı yanlış girilmiş. Biz bu alanı güncelleyip Java yapacağız.
Kaynak kodlarımız şu şekilde olacak arkadaşlar. Olabildiğince açıklayıcı şekilde kod içinde açıklamaya çalıştım kodları.
index.xhtml Kodu
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 |
<?xml version='1.0' encoding='UTF-8' ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xmlns:h="http://xmlns.jcp.org/jsf/html" xmlns:f="http://xmlns.jcp.org/jsf/core"> <h:head> <title>Facelet Title</title> <script>// Güncelleme işlemi sonucunu pop-up olarak bize verecek. function mesaj(){ if(#{g.Guncelle()}) alert("Güncelleme Başarılı."); else alert("Güncelleme Başarısız."); } </script> </h:head> <h:body> <h:form> <h:inputText value="#{g.text}"/><!--Girilen adı javakoduna yollayacak--> <h:commandButton action="#{g.KayitCek}" value="GÖNDER"/><!--Kaydı veritabanından çeken metodu çalıştıracak.--> <h:dataTable value="#{g.liste}" var="yaz"><!--Gelen sonuçlar buraya aktarılacak.--> <h:column> <f:facet name="header">Adi</f:facet> <h:inputText value="#{yaz.adi}" rendered="#{yaz.guncellenebilirlik}"/> <!--Güncelle linkine tıklayınca bu kısım devreye girecek.--> <h:outputText value="#{yaz.adi}" rendered="#{not yaz.guncellenebilirlik}"/> <!--Kayıt çekilince ilk burası gelecek. rendered kısmı görünürlüğü işaret ediyor.--> </h:column> <h:column> <f:facet name="header">Alanı</f:facet> <h:inputText value="#{yaz.alani}" size="10" rendered="#{yaz.guncellenebilirlik}"/> <h:outputText value="#{yaz.alani}" rendered="#{not yaz.guncellenebilirlik}"/> </h:column> <h:column> <f:facet name="header">Action </f:facet> <h:commandLink value="Güncelle" action="#{g.guncellenebilirligiDegistir(yaz)}" rendered="#{not yaz.guncellenebilirlik}"/> <!--Güncellenebilrliği aktifleştirecek link.--> </h:column> </h:dataTable> <h:commandButton value="Değişiklikleri Kaydet" action="#{g.DegisikliğiKaydet()}"/> <!--Yapılan güncellmeyi listeye kayıt edecek.--> <h:commandButton value="Güncellemeleri Veri Tabanına Kaydet" action="#{g.Guncelle}" onclick="mesaj()"/> <!--Güncellemeyi veri tabanına aktaracak ve alert verdirecek.--> </h:form> </h:body> </html> |
Guncelleme.java Kodu
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 |
import java.io.Serializable; import java.sql.*; import java.util.ArrayList; import java.util.Arrays; import java.util.List; import javax.faces.bean.*; @ManagedBean(name="g") @ViewScoped public class Guncelleme implements Serializable { private static final long serialVersionUID = 1L; String text; Connection con; List<AdiAlani> liste=new ArrayList<AdiAlani>(); public String getText() { return text; } public void setText(String text) { this.text = text; } public List<AdiAlani> getListe() { return liste; } public String KayitCek() { try{ Class.forName("com.mysql.jdbc.Driver"); con=DriverManager.getConnection("jdbc:mysql://localhost:3306/kod5","ilkay","123456"); PreparedStatement ps=con.prepareStatement("SELECT * FROM yazarlar WHERE Adi LIKE ?");//İsme göre sorgu yapıyoruz. ps.setString(1, "%"+text+"%");//İsmin tamamını değil bir kısmını girseniz bile o kısmı içeren isimleri sorguya koyar. ResultSet rs=ps.executeQuery(); while(rs.next()) { AdiAlani aa=new AdiAlani(); aa.setID(rs.getInt("ID"));//Güncelleme için eşsiz alan lazım.ID bizim eşsiz alanımız. aa.setAdi(rs.getString("Adi")); aa.setAlani(rs.getString("Alani")); aa.setGuncellenebilirlik(false);//İlk başta normal yazı halinde gelmesi için güncellenebilirlik kapalı. liste.add(aa); } } catch(Exception e) { System.err.println(e); } return null; } public String DegisikliğiKaydet() { for (AdiAlani adialani : liste){ adialani.setGuncellenebilirlik(false); } //Kayıt güncellenince güncellenebilirliği tekrar kapatılır ve değişiklik işlenir. return null; } public boolean Guncelle()//Güncellemeyi veri tabanına aktaracak metod. { int i=0; try{ Class.forName("com.mysql.jdbc.Driver"); con=DriverManager.getConnection("jdbc:mysql://localhost:3306/kod5","ilkay","123456"); PreparedStatement ps=con.prepareStatement("UPDATE yazarlar SET Adi=?,Alani=? WHERE ID=?"); for(AdiAlani item:liste) //liste içindeki adı,alanı ve ID kısımlarını kullanmak için böyle bir döngü tanımladık. { ps.setString(1, item.adi); ps.setString(2, item.alani); ps.setInt(3, item.ID); i= ps.executeUpdate();//İşlem başarılı olursa i 0'dan büyük değer alır. Olmazsa küçük değer alır. } } catch(Exception e) { System.err.print(e); } if(i>0) return true;//İşlemin başarılı olması durumunda true döner. else return false;//Başarısız olma durumunda false döner. } public String guncellenebilirligiDegistir(AdiAlani a) { a.setGuncellenebilirlik(true); return null; } } |
AdiAlani.java Kodu
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 |
public class AdiAlani { String adi,alani; int ID; boolean guncellenebilirlik; public int getID() { return ID; } public void setID(int ID) { this.ID = ID; } public boolean isGuncellenebilirlik() { return guncellenebilirlik; } public void setGuncellenebilirlik(boolean guncellenebilirlik) { this.guncellenebilirlik = guncellenebilirlik; } public String getAdi() { return adi; } public void setAdi(String adi) { this.adi = adi; } public String getAlani() { return alani; } public void setAlani(String alani) { this.alani = alani; } } |
Ekran çıktılarımıza da bir bakalım.

Muhammed Murat Tutar’ın Alanını Değiştirmek İçin Güncelle Butonuna Basıyoruz. İstersek Adını da Değiştirebiliriz.

Değişiklik Kaydedildi. Şimdi Veri Tabanına Aktarmak İçin Güncellemeleri Veri Tabanına Kaydet Butonuna Tıklıyoruz.
Bu yazıda da bu kadar arkadaşlar. Gelecek yazıda delete(silme) işlemine bakacağız. Esen kalın.
[…] yaptığımız güncelleme işlemine kod eklemesi yapacağım. Önceki yazımı okumadı iseniz buraya tıklayarak okuyabilirsiniz. Bu yazıda veri tabanına yanlış girilmiş bir kaydı sileceğiz. […]
çalışmanız çok faydalı oldu benim için .
Ama kod
Değişiklikleri kaydet deyince direk veri tabanına kayıt ediyor.
Bunu Düzeltirseniz sevinirim.
Teşekürler
Merhabalar.
Yardımcı olduysa ne güzel 🙂
Değişiklikleri kaydet dediğimizde veri tabanına yönelik bir update metodu çalışmıyor bu durumda veri tabanında değişiklik olmaması lazım. Açıkçası kodları görmeden bişey demek zor.
http://sorucevap.kod5.org/ adresinden soru cevap forumumuza üye olup orada sorup kodları da gösterirseniz yardımcı olmaya çalışırım.
İyi çalışmalar.