2010-12-17 3 views
1
Exception in thread "main" java.lang.ClassCastException: org.apache.derby.client.am.Statement cannot be cast to java.beans.Statement 
     at CollegeLibrary.NotRegistered.DBStatement(NotRegistered.java:114) 
     at CollegeLibrary.NotRegistered.<init>(NotRegistered.java:85) 
     at CollegeLibrary.NotRegistered.main(NotRegistered.java:91) 
Java Result: 1 

avec et erreur sur l'intérieur de ces sectionsIm obtenir des erreurs dans la clause SQL suivante

ResultSet SelectQuery(Statement st) { 
     ResultSet rs = null; 
     try { 
      rs = st.executeQuery("select * from APP.STUDENT"); 
     } catch (SQLException ex) { 
      Logger.getLogger(NotRegistered.class.getName()).log(Level.SEVERE, null, ex); 
     } 
     return rs; 
    } 


    void InsertQuery(Statement st) { 

     try { 
      if(_txtFname.getText().length()>0 & _txtLname.getText().length()>0& _txtAddress.getText().length()>0&_txtPhone.getText().length()>0&_txtDob.getText().length()>0&_txtSTcode.getText().length()>0){ 

    st.executeQuery("insert into APP.STUDENT values ('"+_txtFname.getText()+"','"+_txtLname.getText()+"','"+_txtAddress.getText()+"','"+_txtPhone.getText()+"','"+_txtDob.getText()+"','"+_txtSTcode.getText()+"')"); 
      }else{ 
       System.out.println("please fill up the form"); 
      } 
       } catch (SQLException ex) { 
      Logger.getLogger(NotRegistered.class.getName()).log(Level.SEVERE, null, ex); 
     } 
    } 
void UpdateQuery(Statement st) { 

     try { 
      if(_txtFname.getText().length()>0 & _txtLname.getText().length()>0){ 
      st.executeUpdate("update APP.STUDENT SET USERNAME='"+_txtFname.getText()+ 
        "', PASSWORD='"+_txtLname.getText() 
        +"' where USERNAME='"+_oldData+"'"); 
      }else{ 
       System.out.println("please fill up the form"); 
      } 
       } catch (SQLException ex) { 
      Logger.getLogger(NotRegistered.class.getName()).log(Level.SEVERE, null, ex); 
     } 
    } 
void DeleteQuery(Statement st) { 

     try { 
      if(_txtFname.getText().length()>0 & _txtLname.getText().length()>0& _txtAddress.getText().length()>0&_txtPhone.getText().length()>0&_txtDob.getText().length()>0&_txtSTcode.getText().length()>0){ 
       System.out.println(" "); 
      st.executeUpdate("delete from APP.STUDENT where USERNAME='"+_oldData+"'"); 
      }else{ 
       System.out.println("please fill up the form"); 
      } 
       } catch (SQLException ex) { 
      Logger.getLogger(NotRegistered.class.getName()).log(Level.SEVERE, null, ex); 
     } 
    } 

Répondre

8

java.lang.ClassCastException: org.apache.derby.client.am.Statement ne peut pas être cast à java.beans.Statement

Je pense que vous avez la mauvaise déclaration import dans votre code.

Il ya java.sql.Statement (que vous voulez ici), et java.beans.Statement (ce qui est quelque chose de complètement différent).

Dans la plupart des cas, vous voulez plutôt utiliser java.sql.PreparedStatement, qui contourne également le conflit de noms. Ne mettez pas de valeurs littérales directement dans le SQL, utilisez des variables de liaison.

+1

C'est ce qui se passe lorsque vous laissez votre IDE choisir l'importation sans voir que l'on a le choix il. –

+0

Dans la vraie vie, cependant, vous découvrirez très vite qu'aucune des méthodes que vous voulez appeler sur "Statement" n'est là. Je me demande pourquoi il a ajouté le casting en premier lieu. Partout où vous obtenez une déclaration de retournera un java.sql.Statement, et les méthodes qu'il a montré semblent importer le bon, (ils ont un executeQuery qui retourne un ResultSet). Je ne me souviens pas avoir jamais fait une distribution explicite à la déclaration. – Thilo

+0

Merci les gars j'ai essayé d'importer le java.sql.statement mais toujours le même problème – dnyondo

3

Vous devez importer

java.sql.statment not java.bean.statement 
+2

Cela a déjà été répondu. Juste upvote si vous êtes d'accord. – BalusC

Questions connexes