ExecuteQuery NullPointerException Ошибка

Я начинаю с этого, вероятно, поэтому у меня возникает эта ошибка, когда я пытаюсь сделать что-то очень простое.

Я просто хочу получить текущий идентификатор пользователя и использовать его в других классах. Но я получаю ошибку 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.

Я дал часы, чтобы решить эту проблему, но не смог, поэтому мне нужна твоя помощь.

Спасибо

у вас есть это: private PreparedStatement sta=null;, вы должны инициализировать его, прежде чем использовать его внутри этого метода, это нормально, что он остается null

мυѕτавєւмo 28.07.2018 23:41

Вы никогда не инициализируете sta. Вы, наверное, хотели использовать stmt

van dench 28.07.2018 23:41
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
2
2
234
1

Ответы 1

Вы инициализируете

private PreparedStatement sta=null;

Следовательно, sta - это null и дает вам NullPointerException.

Вы можете попробовать что-нибудь в зависимости от вашего проекта,

sta = new PreparedStatement()

Или же

ResultSet rss = stmt.executeQuery(); //stmt instead of sta

Другие вопросы по теме