2014-06-08 3 views
0

J'essaie de créer une application simple en Java. C'est comme une liste de contacts avec quelques fonctions telles que les boutons suivant, précédent, premier et dernier. J'ai écrit du code pour le bouton "suivant". Mon programme fonctionne, mais quand je clique sur le bouton « suivant » il me donne cette erreurProchain bouton sur Java DB Program

Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException 
    at Employees.Workers.btnnextActionPerformed(Workers.java:199) 
    at Employees.Workers.access$200(Workers.java:11) 
    at Employees.Workers$3.actionPerformed(Workers.java:111) 
    at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2018) 
    at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2341) 
    at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402) 
    at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259) 
    at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:252) 
    at java.awt.Component.processMouseEvent(Component.java:6505) 

Voici mon code:

public Workers() { 
     initComponents(); 
     DoConnect(); 
    } 

    public void DoConnect(){ 

     try{  
    String host = "jdbc:derby://localhost:1527/Employees"; 

    String uName = "Administrator"; 

    String uPass = "*********"; 

    Connection con = DriverManager.getConnection(host,uName,uPass); 

    stmt = con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_UPDATABLE); 

    String SQL; 
     SQL = "SELECT * FROM Administrator.Workers"; 

    ResultSet rs = stmt.executeQuery(SQL); 
    //identify the Columns 
    // We want to go through all the records from our table. Thats why we used a while loop 
    rs.next(); 
    int id_col = rs.getInt("ID"); 
    String id = Integer.toString(id_col); 
    String first_name = rs.getString("First_Name"); 
    String last_name = rs.getString("Last_Name"); 
    String job_title = rs.getString("Job_Title"); 

    textID.setText(id); 
    textFirstName.setText(first_name); 
    textLastName.setText(last_name); 
    textJobTitle.setText(job_title); 



    } 

    catch(SQLException err){ 
     JOptionPane.showMessageDialog(Workers.this, err.getMessage()); 

    } 


     } 



private void btnnextActionPerformed(java.awt.event.ActionEvent evt) {           
     try { 
if (rs.next()) { 


    int id_col = rs.getInt("ID"); 
    String id = Integer.toString(id_col); 
    String first_name = rs.getString("First_Name"); 
    String last_name = rs.getString("Last_Name"); 
    String job_title = rs.getString("Job_Title"); 

    textID.setText(id); 
    textFirstName.setText(first_name); 
    textLastName.setText(last_name); 
    textJobTitle.setText(job_title); 



} 
+0

Êtes-vous sûr que vous avez copié et collé le code correctement? Quelque chose semble très éteint à la fin ... Le "private bidnnextActionPerformed" est défini deux fois et ne se termine pas correctement. – Ruslan

+0

Merci! Je l'ai édité. –

Répondre

3

Dans la méthode DoConnect, vous avez decleared rs comme locale variables ...

ResultSet rs = stmt.executeQuery(SQL); 

ce qui signifie que lorsque vous essayez d'utiliser dans votre gestionnaire d'action boutons, il est soit null ou non ce que vous avez déjà chargé à partir de votre base de données

Essayez de supprimer la décélération

rs = stmt.executeQuery(SQL); 

Cela suppose que rs est déclarée correctement ailleurs, qu'il doit être au programme pour compiler

+0

Merci! J'ai enlevé ResultSet et cela a fonctionné! J'ai déjà déclaré la chaîne ResultSet au début. Je n'ai pas besoin de le déclarer à nouveau comme une variable locale. –

+0

S'il vous plaît [accepter] (http://meta.stackoverflow.com/a/65088/155831) la réponse si elle a aidé à résoudre le problème. –