2012-12-13 3 views
1

내 응용 프로그램에 로그인 창이 있습니다. 데이터베이스에서 암호를 빼내어 arraylist1에 입력하는 방법이 있습니다. 또한 사용자가 입력 한 비밀번호는 arraylist2에 입력 한 다음 arraylist2이 포함되어 있는지 확인하고, 그렇다면 비밀번호를 잘못 입력했다는 메시지를 출력합니다.null 포인터 오류

Model.java

public class Model { 

     public ArrayList<LogPass> getPass() throws SQLException{ 

     Connection con =null; 
     PreparedStatement stmt = null; 
     ResultSet rs = null; 

     ArrayList<LogPass> list = new ArrayList<LogPass>(); 
     try{ 
     con = DriverManager.getConnection("jdbc:mysql://localhost:3306/xxxxx?user=bbbbb&password=aaaaaa"); 
     stmt = con.prepareStatement("SELECT Pass FROM Logpass"); 
     rs = stmt.executeQuery(); 

     while(rs.next()){ 
     LogPass t = new LogPass(); 
     t.setPass(rs.getString("Pass")); 
     list.add(t); 
     } 
     } 
     finally{ 
       if(rs != null) try {rs.close();}catch (SQLException se){} 
       if (stmt != null) try{stmt.close();} catch (SQLException se){} 
       if (con != null) try {con.close();}catch (SQLException se){} 


     } 

      return list; 

     } 

    } 

Login.java

public class Login extends javax.swing.JFrame { 

Control c = new Control(); 
Model m; 

    /** 
    * Creates new form Login 
    */ 
    public Login() { 
     initComponents(); 
    } 

    /** 
    * This method is called from within the constructor to initialize the form. 
    * WARNING: Do NOT modify this code. The content of this method is always 
    * regenerated by the Form Editor. 
    */ 
    @SuppressWarnings("unchecked") 
    // <editor-fold defaultstate="collapsed" desc="Generated Code"> 
    private void initComponents() { 

     jPanel1 = new javax.swing.JPanel(); 
     jComboBox1 = new javax.swing.JComboBox(); 
     jTextField1 = new javax.swing.JTextField(); 
     jPasswordField1 = new javax.swing.JPasswordField(); 
     jLabel1 = new javax.swing.JLabel(); 
     jLabel2 = new javax.swing.JLabel(); 
     jLabel3 = new javax.swing.JLabel(); 
     jButton1 = new javax.swing.JButton(); 
     jButton2 = new javax.swing.JButton(); 

     setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE); 

     jComboBox1.setMaximumRowCount(2); 
     jComboBox1.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "Staff", "Manager", " " })); 

     jLabel1.setText("Username"); 

     jLabel2.setText("Password"); 

     jLabel3.setText("Domain"); 

     jButton1.setText("Login"); 
     jButton1.addActionListener(new java.awt.event.ActionListener() { 
      public void actionPerformed(java.awt.event.ActionEvent evt) { 
       jButton1ActionPerformed(evt); 
      } 
     }); 

     jButton2.setText("Exit"); 
     jButton2.addActionListener(new java.awt.event.ActionListener() { 
      public void actionPerformed(java.awt.event.ActionEvent evt) { 
       jButton2ActionPerformed(evt); 
      } 
     }); 

     javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1); 
     jPanel1.setLayout(jPanel1Layout); 
     jPanel1Layout.setHorizontalGroup(
      jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) 
      .addGroup(jPanel1Layout.createSequentialGroup() 
       .addGap(62, 62, 62) 
       .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) 
        .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel1Layout.createSequentialGroup() 
         .addComponent(jButton1) 
         .addGap(37, 37, 37) 
         .addComponent(jButton2)) 
        .addGroup(jPanel1Layout.createSequentialGroup() 
         .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) 
          .addComponent(jLabel2) 
          .addComponent(jLabel3) 
          .addComponent(jLabel1)) 
         .addGap(34, 34, 34) 
         .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING, false) 
          .addComponent(jPasswordField1) 
          .addComponent(jTextField1) 
          .addComponent(jComboBox1, 0, 120, Short.MAX_VALUE)))) 
       .addContainerGap(103, Short.MAX_VALUE)) 
     ); 

     jPanel1Layout.linkSize(javax.swing.SwingConstants.HORIZONTAL, new java.awt.Component[] {jLabel1, jLabel2, jLabel3}); 

     jPanel1Layout.linkSize(javax.swing.SwingConstants.HORIZONTAL, new java.awt.Component[] {jButton1, jButton2}); 

     jPanel1Layout.setVerticalGroup(
      jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) 
      .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel1Layout.createSequentialGroup() 
       .addGap(42, 42, 42) 
       .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) 
        .addComponent(jLabel1) 
        .addComponent(jTextField1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) 
       .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) 
       .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) 
        .addGroup(jPanel1Layout.createSequentialGroup() 
         .addComponent(jLabel2) 
         .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) 
         .addComponent(jLabel3) 
         .addGap(0, 0, Short.MAX_VALUE)) 
        .addGroup(jPanel1Layout.createSequentialGroup() 
         .addComponent(jPasswordField1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) 
         .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) 
         .addComponent(jComboBox1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) 
         .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 41, Short.MAX_VALUE) 
         .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) 
          .addComponent(jButton2) 
          .addComponent(jButton1)) 
         .addGap(29, 29, 29)))) 
     ); 

     javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane()); 
     getContentPane().setLayout(layout); 
     layout.setHorizontalGroup(
      layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) 
      .addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) 
     ); 
     layout.setVerticalGroup(
      layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) 
      .addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) 
     ); 

     pack(); 
    }// </editor-fold> 

    private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) { 
     // TODO add your handling code here: 
     System.exit(0); 
    } 

    private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) { 
     //try { 
      // TODO add your handling code here: 
      //String a = new String(jPasswordField1.getPassword()); 
      // ArrayList<LoginPass2> list2 = new ArrayList<LoginPass2>(); 
      //LoginPass2 l = new LoginPass2(); 
      //l.setPass2(a); 
      //list2.add(l); 

      //if(m.getPass().equals(l)){ 
      // if(m.getPass().containsAll(list2)){ 
      this.setVisible(false); 
      c.setVisible(true); 
     //}//else{System.out.println("Wrong username or password!");} 
     //} catch (SQLException ex) { 
      // Logger.getLogger(Login.class.getName()).log(Level.SEVERE, null, ex); 
     //} 

    } 

    /** 
    * @param args the command line arguments 
    */ 
    public static void main(String args[]) { 
     /* 
     * Set the Nimbus look and feel 
     */ 
     //<editor-fold defaultstate="collapsed" desc=" Look and feel setting code (optional) "> 
     /* 
     * If Nimbus (introduced in Java SE 6) is not available, stay with the 
     * default look and feel. For details see 
     * http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html 
     */ 
     try { 
      for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) { 
       if ("Nimbus".equals(info.getName())) { 
        javax.swing.UIManager.setLookAndFeel(info.getClassName()); 
        break; 
       } 
      } 
     } catch (ClassNotFoundException ex) { 
      java.util.logging.Logger.getLogger(Login.class.getName()).log(java.util.logging.Level.SEVERE, null, ex); 
     } catch (InstantiationException ex) { 
      java.util.logging.Logger.getLogger(Login.class.getName()).log(java.util.logging.Level.SEVERE, null, ex); 
     } catch (IllegalAccessException ex) { 
      java.util.logging.Logger.getLogger(Login.class.getName()).log(java.util.logging.Level.SEVERE, null, ex); 
     } catch (javax.swing.UnsupportedLookAndFeelException ex) { 
      java.util.logging.Logger.getLogger(Login.class.getName()).log(java.util.logging.Level.SEVERE, null, ex); 
     } 
     //</editor-fold> 

     /* 
     * Create and display the form 
     */ 
     java.awt.EventQueue.invokeLater(new Runnable() { 

      public void run() { 
       new Login().setVisible(true); 
      } 
     }); 
    } 
    // Variables declaration - do not modify 
    private javax.swing.JButton jButton1; 
    private javax.swing.JButton jButton2; 
    private javax.swing.JComboBox jComboBox1; 
    private javax.swing.JLabel jLabel1; 
    private javax.swing.JLabel jLabel2; 
    private javax.swing.JLabel jLabel3; 
    private javax.swing.JPanel jPanel1; 
    private javax.swing.JPasswordField jPasswordField1; 
    private javax.swing.JTextField jTextField1; 
    // End of variables declaration 
} 

LogPass.java

public class LogPass { 
     private String log; 
     private String pass; 


     public String getLog(){ 
     return log; 
     } 
     public void setLog(String l){ 
      log = l ; 


     } 
     public String getPass(){ 
     return pass; 
     } 
     public void setPass(String p){ 
      pass = p ; 


     } 

    } 
: 불행하게도, 난 null pointer error

내 코드를 확인하시기 바랍니다가 계속 0

LoginPass2.java

public class LoginPass2 { 
     private String log; 
     private String pass; 


     public String getLog2(){ 
     return log; 
     } 
     public void setLog2(String l){ 
      log = l ; 


     } 
     public String getPass2(){ 
     return pass; 
     } 
     public void setPass2(String p){ 
      pass = p ; 


     } 

    } 

이 오류 메시지가 당신의 도움에 대한

Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException 
    at fish.Login.jButton1ActionPerformed(Login.java:152) 
    at fish.Login.access$000(Login.java:14) 
    at fish.Login$1.actionPerformed(Login.java:59) 
    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) 
    at javax.swing.JComponent.processMouseEvent(JComponent.java:3321) 
    at java.awt.Component.processEvent(Component.java:6270) 
    at java.awt.Container.processEvent(Container.java:2229) 
    at java.awt.Component.dispatchEventImpl(Component.java:4861) 
    at java.awt.Container.dispatchEventImpl(Container.java:2287) 
    at java.awt.Component.dispatchEvent(Component.java:4687) 
    at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4832) 
    at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4492) 
    at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4422) 
    at java.awt.Container.dispatchEventImpl(Container.java:2273) 
    at java.awt.Window.dispatchEventImpl(Window.java:2713) 
    at java.awt.Component.dispatchEvent(Component.java:4687) 
    at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:707) 
    at java.awt.EventQueue.access$000(EventQueue.java:101) 
    at java.awt.EventQueue$3.run(EventQueue.java:666) 
    at java.awt.EventQueue$3.run(EventQueue.java:664) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76) 
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:87) 
    at java.awt.EventQueue$4.run(EventQueue.java:680) 
    at java.awt.EventQueue$4.run(EventQueue.java:678) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76) 
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:677) 
    at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:211) 
    at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:128) 
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:117) 
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:113) 
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:105) 
    at java.awt.EventDispatchThread.run(EventDispatchThread.java:90) 

감사합니다 :) 당신이 NULL 포인터 오류가 발생하는

+3

Login.java의 152 행은 어디에 있습니까? – assylias

+0

Lol, 실제로 코드 아래에있는 스택 추적이있었습니다. –

+0

쓰기 catch (SQLException ex) { ex.printStackTrace(); } –

답변

1

를 얻을 수있다?

할당 후 변수 con, stmtrs을 확인해야합니다. 또한 while 루프가 잘못되었습니다. 첫째, 그것은 세트를 통해 움직이는 것 같지 않습니다. 또한 조건이 true을 반환합니까?

+0

암호를 넣은 후 버튼을 누르면 null 포인터가 생깁니다. – novice

0

jButton1ActionPerformed 메서드에서 u는 정의되지 않은 "m"변수를 사용하고 있습니다.

+0

이것은 내 클래스의 시작입니다. public class Login은 javax.swing.JFrame을 확장합니다. { Control c = new Control); 모델 m; – novice

+0

네,하지만 절대 그 var 초기화하지 않습니다. 아니면 찾을 수 없습니다 = / –

0

회원 변수를 Login 클래스로 초기화하는 것을 잊었다 고 생각합니다. 생성자에서 초기화 될 m 또는 c 변수를 볼 수 없습니다.

하지만 이것을 제대로 보려면 전체 코드를 게시해야합니다. 그리고 당신이 NPE를 얻을 곳을 표시하십시오. 그것은 152 라인이 진짜 도움이되지 않는다고 말하는 것입니다 ...