簡體   English   中英

如何以登錄形式獲取失敗的用戶或密碼消息

[英]how to get fail user or password message in login form

您好,我嘗試收到一條消息,提示我輸入失敗的登錄信息時用戶名或密碼錯誤,但這樣做時系統崩潰! 當我使用正確的登錄信息登錄時,它可以完美工作,但是當我鍵入錯誤的用戶名或密碼時,它不能正常運行。

private void btnLogInActionPerformed(java.awt.event.ActionEvent evt) {                                          



 if (projekt.Validering.textNotEmpty(tfUser) && Validering.textNotEmpty(tfPassword)){ 

   try 
     {  
     String name = tfUser.getText();  
     String password = new String(tfPassword.getPassword());  
     String allName = db.fetchSingle("SELECT PASSWORD FROM TEACHER where FORNAME = '"+name+"';");  
     String admin = db.fetchSingle("SELECT ADMINISTRATOR FROM TEACHER WHERE FORNAME ='"+name+"';");  



     if (allName.equals(password) && admin.equals("T"))  
    {  
        JOptionPane.showMessageDialog(rootPane, "you login as admin");  

        adminPagea = new adminPage(db); 
        a.setVisible(true);  
        this.dispose();  

    }  
    else if (allName.equals(password) && admin.equals("F")) 
    {  

        JOptionPane.showMessageDialog(rootPane, "you login as teacher");



        teacherPage ls = new teacherPage(db);  

         ls.setVisible(true);  

        this.dispose();  



    } else  

         JOptionPane.showMessageDialog(rootPane, "wrong user or password try again!");  



     } catch (InfException e) {

         JOptionPane.showMessageDialog(rootPane, "something went wrong!: " + e); 

}                                         
}
}

系統崩潰時的錯誤

enter code here
run:
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
    at projekt.teacherPage.btnLoggInActionPerformed(teacherPage.java:171)
    at projekt.teacherPage.access$200(teacherPage.java:22)
    at projekt.teacherPage$3.actionPerformed(teacherPage.java:132)
    at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2022)
    at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2348)
    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:6533)
    at javax.swing.JComponent.processMouseEvent(JComponent.java:3324)
    at java.awt.Component.processEvent(Component.java:6298)
    at java.awt.Container.processEvent(Container.java:2236)
    at java.awt.Component.dispatchEventImpl(Component.java:4889)
    at java.awt.Container.dispatchEventImpl(Container.java:2294)
    at java.awt.Component.dispatchEvent(Component.java:4711)
    at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4888)
    at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4525)
    at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4466)
    at java.awt.Container.dispatchEventImpl(Container.java:2280)
    at java.awt.Window.dispatchEventImpl(Window.java:2746)
    at java.awt.Component.dispatchEvent(Component.java:4711)
    at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:758)
    at java.awt.EventQueue.access$500(EventQueue.java:97)
    at java.awt.EventQueue$3.run(EventQueue.java:709)
    at java.awt.EventQueue$3.run(EventQueue.java:703)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:80)
    at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:90)
    at java.awt.EventQueue$4.run(EventQueue.java:731)
    at java.awt.EventQueue$4.run(EventQueue.java:729)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:80)
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:728)
    at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201)
    at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
    at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)
BUILD SUCCESSFUL (total time: 13 seconds)

您說該代碼在用戶名和密碼正確的情況下可以正常工作。 但是您的變量名存在一些錯誤:

String namn;

然后使用它作為名稱。

在這種情況下,它只是一個拼寫錯誤,並且原始代碼使用正確的變量名,在這種情況下, 我認為您的問題是您正在對空對象調用函數

當您輸入錯誤的用戶名和密碼時,以下幾行:

String allName = db.fetchSingle("SELECT PASSWORD FROM TEACHER where FORNAME = '"+name+"';");  
     String admin = db.fetchSingle("SELECT ADMINISTRATOR FROM TEACHER WHERE FORNAME ='"+name+"';"); 

返回分配給allName和admin的空值

之后,在以下幾行中對這些變量調用一些函數:

if (allName.equals(password) && admin.equals("T")) 

在這種情況下,allName為null,並且您試圖在null對象上調用函數。

嘗試更新您的代碼:

private void btnLogInActionPerformed(java.awt.event.ActionEvent evt) {                                          



 if (projekt.Validering.textNotEmpty(tfUser) && Validering.textNotEmpty(tfPassword)){ 

   try 
     {  
     String name = tfUser.getText();  
     String password = new String(tfPassword.getPassword());  
     String allName = db.fetchSingle("SELECT PASSWORD FROM TEACHER where FORNAME = '"+name+"';");  
     String admin = db.fetchSingle("SELECT ADMINISTRATOR FROM TEACHER WHERE FORNAME ='"+name+"';");  


     if((allName!=null)&&(admin!=null))
     {

             if (allName.equals(password) && admin.equals("T"))  
             {  
                 JOptionPane.showMessageDialog(rootPane, "you login as admin");  
                 adminPagea = new adminPage(db); 
                 a.setVisible(true);  
                 this.dispose();  
            }  
            else if (allName.equals(password) && admin.equals("F")) 
            {  
                 JOptionPane.showMessageDialog(rootPane, "you login as teacher");
                 teacherPage ls = new teacherPage(db);  
                 ls.setVisible(true); 
                 this.dispose();  
             }
     }
     else  
     {
            JOptionPane.showMessageDialog(rootPane, "wrong user or password try again!");  
     }     

     } 

     catch (InfException e)
      {
         JOptionPane.showMessageDialog(rootPane, "something went wrong!: " + e); 

      }                                         
}
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM