Я начинаю с этого, вероятно, поэтому у меня возникает эта ошибка, когда я пытаюсь сделать что-то очень простое.
Я просто хочу получить текущий идентификатор пользователя и использовать его в других классах. Но я получаю ошибку NullPointerException для строки ExecuteQuery ().
Разрешите поделиться кодом:
public class LoginPage extends javax.swing.JFrame {
private Connection conn=null;
private ResultSet rs=null;
private PreparedStatement pst=null;
private PreparedStatement sta=null;
ConnectionDB connect=new ConnectionDB();
public LoginPage() {
initComponents();
}
public void getCurrentUser(){
try{
PreparedStatement c;
conn=connect.getConnection();
PreparedStatement stmt = conn.prepareStatement("SELECT * FROM users where Mail=?");
stmt.setString(1, lMail.getText());
ResultSet rss=sta.executeQuery();
if (rss.next()){
int CurrentUserID=rss.getInt("ID");
}
}
catch(SQLException ex){
System.out.println("SQL Exception Error!1");
}
}
private void loginButtonActionPerformed(java.awt.event.ActionEvent evt) {
String sql = "SELECT * from users where Mail=? and Password=?";
try{
conn=connect.getConnection();
pst=conn.prepareStatement(sql);
pst.setString(1,lMail.getText());
pst.setString(2,lPass.getText());
rs=pst.executeQuery();
if (rs.next()){
getCurrentUser();
JOptionPane.showMessageDialog(null, "Welcome!");
new ListPage().setVisible(true);
dispose();
}
else
{
JOptionPane.showMessageDialog(null, "Wrong mail-password combination!");
lPass.setText("");
}
}
catch(SQLException ex){
System.out.println("SQL Exception Error!");
}
}
"ResultSet rss = sta.executeQuery ();" является частью исключения NullPointerException.
Я дал часы, чтобы решить эту проблему, но не смог, поэтому мне нужна твоя помощь.
Спасибо
Вы никогда не инициализируете sta. Вы, наверное, хотели использовать stmt




Вы инициализируете
private PreparedStatement sta=null;
Следовательно, sta - это null и дает вам NullPointerException.
Вы можете попробовать что-нибудь в зависимости от вашего проекта,
sta = new PreparedStatement()
Или же
ResultSet rss = stmt.executeQuery(); //stmt instead of sta
у вас есть это:
private PreparedStatement sta=null;, вы должны инициализировать его, прежде чем использовать его внутри этого метода, это нормально, что он остаетсяnull