Arkadaşlar Java Server Faces ile üyelik işlemi yapıyorum.Üyelik bilgilerini dolduruyorum sayfa refresh ediyor ama veritabanına kayıt eklenmiyor.Yardımcı olabilir misiniz.Kod aşağıdaki şekildedir.

KullaniciBean.java
public String uyeol(){
        try {
            Vtİslemleri vi = new Vtİslemleri();
            vi.baglan();
            kullanicibilgisi = vi.uyelik(ad,sifre);
            vi.baglantikes();
            if(kullanicibilgisi != null){
                return "kullanici";
            }
        } catch (Exception e) {
            return null;
        }
        return null;
    }
 Vtislemleri.java
public Kullanici uyelik(String ad, String sifre) throws SQLException{
            String sorgu = "INSERT INTO uye VALUES (DEFAULT,?,?)";
            PreparedStatement pstmt = (PreparedStatement)con.prepareStatement(sorgu);
            pstmt.setString(1, k.getAd());
            pstmt.setString(2, k.getSifre());
            pstmt.executeUpdate();
            pstmt.close();
            return k;
        }

soruldu: 26 Kas '12, 07:47

smartbusiness's gravatar image

smartbusiness
1223
cevap kabul oranı: 0%

değiştirildi: 26 Kas '12, 09:17

%C3%B6zcanacar's gravatar image

özcanacar ♦♦
17.2k59183183


Vtislemleri.java sınıfında parametre olarak ad ve sifre değerlerini alıyorsun fakat soru işaretlerine karşılık gelen değerlere

pstmt.setString(1, k.getAd());
pstmt.setString(2, k.getSifre());

Bence bir kere daha gözden geçirmelisin.

permanent link

cevaplandı: 26 Kas '12, 07:55

Tunahan%20Pehlivan's gravatar image

Tunahan Pehlivan
2.5k61740
cevap kabul oranı: 15%

Burayı bu şekilde değiştirmemi söylüyorsun sanırsam yaptım ama düzelmedi.İlk denediğimde bu şekilde yapmıştım zaten bu şekilde olmuyor.Acaba doğru mu anladım.

pstmt.setString(1, ad);
pstmt.setString(2, sifre);
(26 Kas '12, 08:06) smartbusiness smartbusiness's gravatar image

Debug yaparsan sorunu daha kolay anlayabilirsin. Ben az önce ki bilgiyi mantık dışı olduğu için gözden geçir demiştim.

(26 Kas '12, 08:11) Tunahan Pehlivan Tunahan%20Pehlivan's gravatar image
"INSERT INTO uye VALUES (DEFAULT,?,?)"

INSERT INTO uye (Id,Ad,Sifre) VALUES (DEFAULT,?,?) sorguyu bu şekilde değiştirirmisin.

Ayrıca kodu try catch bloğu içine alıp, exception yakalarmısın. Exception'daki mesajı hata olarak buraya yazarsan çözüme kavuşman yakındır. ;)

permanent link

cevaplandı: 26 Kas '12, 08:13

Turgay%20Can's gravatar image

Turgay Can
8.3k63798
cevap kabul oranı: 18%

KullanıcıBean.java sınıfı zaten try catch bloğu içinde veritabanı işlemlerinin olduğu bölümü de try catch bloğu içine alırsam istediğim sonucu veriyor ama veritabanına kayıt eklemiyor.Benim sorunum veritabanına kayıt eklemekte.

(26 Kas '12, 10:57) smartbusiness smartbusiness's gravatar image

Exception'ı null olarak döndürüyorsun. e.printStackTrace(); ile yazdırırsan exception'ı buraya daha anlamlı olur soru. Önceki söylemimde söylemek istediğim buydu.

(26 Kas '12, 15:03) Turgay Can Turgay%20Can's gravatar image
public String uyeol(){
        try {
            Vtİslemleri vi = new Vtİslemleri();
            vi.baglan();
            kullanicibilgisi = vi.uyelik(ad,sifre);
            vi.baglantikes();
            if(kullanicibilgisi != null){
                return "kullanici";
            }
        } catch (Exception e) {
            e.printStackTrace();
            return null;
        }
        return null;
    }

kodu böyle yazarmısın.

permanent link

cevaplandı: 26 Kas '12, 17:06

Turgay%20Can's gravatar image

Turgay Can
8.3k63798
cevap kabul oranı: 18%

Söylemek istediğinizi tam olarak anlayamadım.Biraz daha açık yazabilir misiniz?Ben try catch bloğunda hata yazdırmayı bilmiyorum.try catch olarak bildiğim program herhangi bir hata fırlatacağı zaman bunu görmezden gelmesini sağlamak için kullanılıyor.Ama try catch içinde hata yazdırma konusunda bilgim yok.

(26 Kas '12, 16:59) smartbusiness smartbusiness's gravatar image

Hiçbir değişiklik olmadı.kullanici.xhtml sayfasına gidiyor.Ama veritabanına kayıt eklemiyor.

(26 Kas '12, 17:12) smartbusiness smartbusiness's gravatar image

Sisteme yeni üye adı ile giriş yaptı.Sistemden çıkış yaptığımda böyle bir hata aldım. "viewId:/kullanici.xhtml - View /kullanici.xhtml could not be restored."

(26 Kas '12, 17:13) smartbusiness smartbusiness's gravatar image

Mesaj yerine yorum olarak bu tür mesajları yazsan daha efektif olur. Gelelim hatanın fırlatıldığı kısıma, editöründe konsola bakarmısın ne tür bir hata çıktı orada, oradaki hata logunu buraya atarmısın.

(26 Kas '12, 17:40) Turgay Can Turgay%20Can's gravatar image

Program saçmalamaya başladı.Şimdi sorunsuz çalışıyor ama hala veritabanına kayıt eklemiş değilim.Kafayı yiyeceğim.Program kafasına göre hata veriyor sonra düzeliyor :)

(26 Kas '12, 17:46) smartbusiness smartbusiness's gravatar image

Sorunumu daha açık olarak şöyle anlatayım.Anasayfadan üye ol linkine tıkladığımda üye ol sayfası açılıyor.Burada yeni üye adı ve şifresini girince eğer kullanicibilgisi boş değilse yani veritabanına yeni bir kayıt eklenmişse kullanıcı sayfasına geçiş yapacak.En son haliyle sizin söylediğiniz şekilde hatayı try catch de yazdırmayı denedim ama hala yeni üye adı ve şifreyi girdiğimde sayfa kendini yeniliyor ve veritabanına kayıt eklenmiyor.

(26 Kas '12, 17:53) smartbusiness smartbusiness's gravatar image

Kafasına göre hata vermez eksik birşeyler vardır. Clean and Build yap sonra tekrar deploy et.

SQL cümlende tablodaki sutun isimleri eksik söylemiştim daha önce ama yinede tekrarlayayım.. Birde exception logun olmadan çok zor yardımcı olmak.

Kolay gelsin.

(26 Kas '12, 17:55) Turgay Can Turgay%20Can's gravatar image

Son yazdığımı okudunuz mu belki başka bir fikir verebilir size

(26 Kas '12, 18:10) smartbusiness smartbusiness's gravatar image
8 yorumdan 5 tanesi gösteriliyor hepsini göster

Kısa bir örnek yazayım,kendine uyarlarsın.

kullanici.java sinifim
{
private String userad;
private String usersifre;

public String getUserad() {
    return userad;
}

public void setUserad(String userad) {
    this.userad = userad;
}

public String getUsersifre() {
    return usersifre;
}

public void setUsersifre(String usersifre) {
    this.usersifre = usersifre;
}
}

kullanicikaydet bean sınıfım

import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import java.sql.*;

@ManagedBean
@SessionScoped
public class kullanicikaydet {  
private  kullanici k=new kullanici();
public kullanici getK() {
    return k;
}
public void setK(user k) {
    this.k= k;
}  
public String kaydet() throws Exception{ 
    DBCON baglanti=new DBCON(); //MYSQL veritabanına bağlantı kurduğum sınıf DBCON.java    
    PreparedStatement pst=baglanti.baglan().prepareStatement("insert into tabloadi (kullanici_adi,kullanici_sifre) values (?,?)");
    pst.setString(1,k.getUserad());
    pst.setString(2,k.getUsersifre());     
    pst.executeUpdate();

    System.out.println(k.getUserad());// inputtext'e girilen kullanıcı adını konsola yazar
    System.out.println(k.getUsersifre()); inputtext'e girilen kullanıcı şifresini konsola yazar
    Bu şekilde inputtext'lere girilen verilerin okunup okunmadığını kontrol edebilirsiniz

pst.close;         
baglanti.baglan().close();
return "anasayfa.xhtml";
 }          
    public kullanicikaydet() {
    }
 }

xhtml sayfam

<h:inputtext value="#{kullanicikaydet.k.userad}"/> //kullanıcı adı girilen input
<h:inputtext value="#{kullanicikaydet.k.usersifre}"/> //şifre girilen input
<h:commanbutton action="#{kullanicikaydet.kaydet}"/>

Birde kısaca olayın mantığındaqn bahsedeyim bildiğim kadarıyla.Beni yanlış anlamazsınız umarım,belki biliyorsunuzdur ama yinede bilgiyi paylaşmak gerekir diye düşünüyorum

Örneğimizde ...xhtml sayfasındaki inputlardan veri girişi yapıldığında,bu veriler kullanici.java sınıfındaki userad ve usersifre değişkenlerinde depolanır. Kullanicikaydet bean sınıfımızdaki kaydet methodu ile,kullanici.java sınıfında depo edilen verileri getUserad ve getUsersifre ile okuyup,preparedstatement içindeki sorguda belirtilen parametrelere aktarırız. pst.executeupdate(); ile veriler veritabanına kaydedilir.

Kısaca 1-Kullanıcı inputtext'lere veri girer ve kaydet butonuna basar 2-Kullanıcının girdiği veriler kullanici.java sınıfındaki değişkenlerde depolanır 3-kaydet() methodumuzdaki sql sorgusunda belirtilen parametrelere,get ile okunan değerler aktarılır ve işlem sonlanır. Eğer yazmış olduklarımda yanlışım varsa lütfen uyarın,hem yanlışımı düzelteyim,hem yanlış yönlendirme yapmayayım.

Birde,ben mysql veritabanı kullanıyorum,Autoincrement özelliği olan id alanlarına,java tarafından değer göndermiyorum,zaten id alanı otomatik artıyor.Sizin sorununuz bu da olabilir,çünkü bende oto artan alana default değer göndererek kaydedememiştim,belki farklı bir sebebide olabilir bilmiyorum.

Son bir hatırlatma,hangi sunucu+ide'yi kullanıyorsunuz bilmiyorum,ben Netbeans 7.2+Apache Tomcat 7.0 kullanıyorum,bazen Apache ile ilgili sorunlardan dolayı,yaptığım değişikliklerde sorun oluyor,projeyi build ederken hata veriyor,Apache Tomcat sunucusunu stop edip tekrar derleme yapıp projeyi çalıştırdığımda yaptığım değişiklikler çalışıyor,aklınızda olsun

permanent link

cevaplandı: 01 Ara '12, 06:07

azizc's gravatar image

azizc
5181010
cevap kabul oranı: 0%

değiştirildi: 01 Ara '12, 06:47

connection'ı kapatmamışsın. finally bloğunu koduna eklemen elzemdir.

(01 Ara '12, 06:12) Turgay Can Turgay%20Can's gravatar image

Parametreler için commons db utils kullanın soru işaretleri yerine direk Object[] tipinde verebilirsiniz ve query de index sırasına göre soru işaretlerini kendi ekliyor. Bence bir gözden geçirin çok başarılı. Başka birçok özelliğide size cabası

permanent link

cevaplandı: 06 Ara '12, 02:28

yaqmoz's gravatar image

yaqmoz
2074512
cevap kabul oranı: 4%

değiştirildi: 06 Ara '12, 02:29

PreparedStatement doğru import yapmamişsın, java.sql.* paketdineki PreparedStatement import yapıcaksin.Cunki normalde PreparedStatement cast yapmamsi gerekmiyor amma sende oyle degil.

İyi calismalar

Murad Imanbayli

http://muradimanbayli.wordpress.com/

permanent link

cevaplandı: 06 Ara '12, 10:56

Murad's gravatar image

Murad
3665814
cevap kabul oranı: 9%

Murad: Soruyu ben sormuştum.PreparedStatement eklerken java.sql.* paketindekini ekledim.Problemin nedeni id değişkenini autoincrement yapmadığımdan kaynaklanıyormuş.

(06 Ara '12, 11:38) mc44 mc44's gravatar image
Cevabınız
toggle preview

Bu soruyu takip et

E-Posta üzerinden:

Üyelik girişi yaptıktan sonra abonelik işlemlerini yapabilirsiniz

RSS üzerinden:

Cevaplar

Cevaplar ve Yorumlar

Yazı Formatlama

  • *italic* ya da _italic_
  • **bold** ya da __bold__
  • link:[text](http://url.com/ "başlık")
  • resim?![alt text](/path/img.jpg "başlık")
  • liste: 1. Foo 2. Bar
  • temel HTML etiketleri de kullanılabilir

Bu sorunun etiketleri:

×281

Soruldu: 26 Kas '12, 07:47

Görüntüleme: 1,233 kez

Son güncelleme: 06 Ara '12, 11:38

powered by BitNami OSQA