有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

线程“awteventque0”java中的mysql异常。lang.NullPointerException登录表单错误

我的代码的目的是打开“Gestionnaire”窗口或返回错误消息“无效用户名/密码”,但是当我在登录表单中单击登录而不是发送错误“无效用户名/密码”时,它返回错误:

java线程“AWT-EventQueue-0”中出现异常。lang.NullPointerException 在javaapplicationhotel2。登录表单。jButton_LoginActionPerformed(Login_Form.java:426) 在javaapplicationhotel2。登入表格$8。已执行操作(登录表单java:206) 在爪哇。桌面/javax。摆动抽象按钮。fireActionPerformed(AbstractButton.java:1967) 在爪哇。桌面/javax。摆动AbstractButton$Handler。actionPerformed(AbstractButton.java:2308) 在爪哇。桌面/javax。摆动DefaultButtonModel。fireActionPerformed(DefaultButtonModel.java:405) 在爪哇。桌面/javax。摆动DefaultButtonModel。setPressed(DefaultButtonModel.java:262) 在爪哇。桌面/javax。摆动普拉夫。基本的基本按钮列表。mouseReleased(BasicButtonListener.java:279) 在爪哇。桌面/java。awt。AWTEventMulticaster。鼠标释放(AWTEventMulticaster.java:297) 在爪哇。桌面/java。awt。组成部分ProcessMouseeEvent(Component.java:6636) 在爪哇。桌面/javax。摆动JComponent。processMouseEvent(JComponent.java:3342) 在爪哇。桌面/java。awt。组成部分processEvent(Component.java:6401) 在爪哇。桌面/java。awt。容器processEvent(Container.java:2263) 在爪哇。桌面/java。awt。组成部分dispatchEventImpl(Component.java:5012) 在爪哇。桌面/java。awt。容器dispatchEventImpl(Container.java:2321) 在爪哇。桌面/java。awt。组成部分dispatchEvent(Component.java:4844) 在爪哇。桌面/java。awt。轻量级调度员。retargetMouseEvent(Container.java:4918) 在爪哇。桌面/java。awt。轻量级调度员。ProcessMouseeEvent(Container.java:4547) 在爪哇。桌面/java。awt。轻量级调度员。dispatchEvent(Container.java:4488) 在爪哇。桌面/java。awt。容器dispatchEventImpl(Container.java:2307) 在爪哇。桌面/java。awt。窗dispatchEventImpl(Window.java:2762) 在爪哇。桌面/java。awt。组成部分dispatchEvent(Component.java:4844) 在爪哇。桌面/java。awt。事件队列。dispatchEventImpl(EventQueue.java:772) 在爪哇。桌面/java。awt。事件队列4美元。运行(EventQueue.java:721) 在爪哇。桌面/java。awt。事件队列4美元。运行(EventQueue.java:715) 在爪哇。base/java。安全访问控制器。doPrivileged(AccessController.java:391) 在爪哇。base/java。安全ProtectionDomain$JavaSecurityAccessImpl。doIntersectionPrivilege(ProtectionDomain.java:85) 在爪哇。base/java。安全ProtectionDomain$JavaSecurityAccessImpl。doIntersectionPrivilege(ProtectionDomain.java:95) 在爪哇。桌面/java。awt。事件队列5美元。运行(EventQueue.java:745) 在爪哇。桌面/java。awt。事件队列5美元。运行(EventQueue.java:743) 在爪哇。base/java。安全访问控制器。doPrivileged(AccessController.java:391) 在爪哇。base/java。安全ProtectionDomain$JavaSecurityAccessImpl。doIntersectionPrivilege(ProtectionDomain.java:85) 在爪哇。桌面/java。awt。事件队列。dispatchEvent(EventQueue.java:742) 在爪哇。桌面/java。awt。EventDispatchThread。pumpOneEventForFilters(EventDispatchThread.java:203) 在爪哇。桌面/java。awt。EventDispatchThread。pumpEventsForFilter(EventDispatchThread.java:124) 在爪哇。桌面/java。awt。EventDispatchThread。pumpEventsForHierarchy(EventDispatchThread.java:113) 在爪哇。桌面/java。awt。EventDispatchThread。pumpEvents(EventDispatchThread.java:109) 在爪哇。桌面/java。awt。EventDispatchThread。pumpEvents(EventDispatchThread.java:101) 在爪哇。桌面/java。awt。EventDispatchThread。运行(EventDispatchThread.java:90)

这是我的代码:

    PreparedStatement st;
    ResultSet rs;

    // donnez l'username et le password 
    String username = jTextField_Username.getText();
    String password = String.valueOf(jPasswordField.getPassword());

    // requete indiquant si les identifiants existent 
    String query = "SELECT * FROM 'users' WHERE 'username' = ? AND 'password' = ?";


    try {
        st = (PreparedStatement) Connecter.getConnection().prepareStatement(query);

        st.setString(1, username);
        st.setString(2, password);
        rs = st.executeQuery();

        if(rs.next())
        {
            //ouvrir le gestionnaire 
            Gestionnaire form = new Gestionnaire();
            form.setVisible(true);
            form.pack();
            form.setLocationRelativeTo(null);

            this.dispose();

        }else{
            //erreur  
            JOptionPane.showMessageDialog(null, " Invalid Username / Password", "Login Error",2);
        }

    } catch (SQLException ex) {
        java.util.logging.Logger.getLogger(Login_Form.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
    }

这是我的连接器:

package javaapplicationhotel2;

/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
import java.sql.*;

/**
 *
 * @author camil
 */




public class Connecter {

  public static Connection getConnection() {
    return con;
}
static Connection con; 


    public Connecter() {
      try{
      Class.forName("com.mysql.cj.jdbc.Driver");
      }catch(ClassNotFoundException e){
          System.err.println(e);


    }
    try{
    con=DriverManager.getConnection("jdbc:mysql://localhost:3306/hotel","root","");
    }catch(SQLException e){System.err.println(e);}
    }
    Connection obtenirconnexion(){return con;}

    PreparedStatement prepareStatement(String select__from_classe) {
        throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.



    }


}

共 (1) 个答案

  1. # 1 楼答案

    应该是

    public static Connection getConnection() {
       if (instance.con == null)
           instance.con = DriverManager.getConnection("jdbc:mysql://localhost:3306/hotel", "root", "");
     return instance.con;
    }
    static Connecter instance = new Connecter();
    static Connection con;
    

    或者

    public static Connecter getConnection(){
       if (connecter == null)
          connecter = new Connecter();
       return connecter;
    }
    
    static Connecter connecter;
    static Connection con;
    //rest of the code