Login方法返回null指针异常

时间:2015-06-18 05:10:27

标签: java swing

我目前正在使用Oracle数据库使用Swing登录表单。但是当我尝试将我的用户名和密码字段输入与我的login()方法进行比较时,我的代码返回了NPE。这是我的部分代码。

LoginUI.java

// field declaration
private JFrame frame;
private JTextField username;
private JPasswordField password;
private JButton login;
private AccessDA access;

// portion of login codes
JLabel lblUsername = new JLabel("Username:");
lblUsername.setFont(new Font("Tahoma", Font.PLAIN, 14));

username = new JTextField();
username.setColumns(10);

JLabel lblPassword = new JLabel("Password:");
lblPassword.setFont(new Font("Tahoma", Font.PLAIN, 14));

password = new JPasswordField();
password.setColumns(10);

login = new JButton("Login");
login.setFont(new Font("Tahoma", Font.PLAIN, 14));
login.addActionListener(new ActionListener(){

    @Override
    public void actionPerformed(ActionEvent e) {

        String u = username.getText();
        char[] p = password.getPassword();

        if(access.login(u, p)){
            JOptionPane.showMessageDialog(null, "Success");
        } else {
            JOptionPane.showMessageDialog(null, "Incorrect credentials");
        }

    }
});

AccessDA.java,login()方法

public boolean login(String username, char[] password) {

boolean status = false;
Connection conn = null;
PreparedStatement pst = null;
ResultSet rs = null;

try {
    conn = ConnectionProvider.getCon();

    pst = conn
            .prepareStatement("select * from users where user_name=? and user_pass=?");
    pst.setString(1, username);
    pst.setString(2, String.valueOf(password));

    rs = pst.executeQuery();
    status = rs.next();

} catch (Exception e) {
    System.out.println(e);
} 
return status;
}

堆栈跟踪

Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at com.strawberry.gui.LoginUI$2.actionPerformed(LoginUI.java:85)
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:6516)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3321)

LoginUI.java:85if(access.login(u, p)){

如何从字段中获取值并将其与我的login()方法进行比较?

感谢。

0 个答案:

没有答案