我目前正在使用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:85
为if(access.login(u, p)){
。
如何从字段中获取值并将其与我的login()
方法进行比较?
感谢。