NullPointerException в запросах Java Mysql

Я новичок в программировании на Java, и я создаю проект, который подразумевает использование java и mysql, и мне не удается исправить исключение NullPointerException в этом фрагменте кода, может ли кто-нибудь мне помочь?

вот полный код, часть подключения работает нормально, протестировано

package database;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;

import database.mainConnection;

public class userUtils extends mainConnection {

    public static void main(String[] args ) throws Exception {
        userLogin("mattia",hash("password");

    }


    /*public static Boolean registerUser(String name, String surname, String username, String email, String password, String Affiliation, String dateOfBirth) throws Exception {
        Connection con = getConnection();
        // 0000-00-00 format date

        PreparedStatement query = con.prepareStatement("INSERT INTO users (UserID, Username, Email, Password, Name, Surname, BirthDate, Affiliation) VALUES (?,?,?,?,?,?,?,?)");

        query.executeUpdate();
        return false;
    }*/

    public static Boolean userLogin(String username, String password) throws Exception {
        Boolean bool = null;
        try{
            Connection con = getConnection();
            PreparedStatement query = con.prepareStatement("SELECT * FROM users WHERE Username=? AND Password=?");
            query.setString(1, username);
            query.setString(2, password);

            ResultSet result = query.executeQuery();

            if (result.next()) {
                bool = true;
            }

            } catch(Exception e) {
                e.printStackTrace();
                }
        return bool;
    }
}

Также он не дает никаких результатов, но я предполагаю, что это связано с исключением nullpointerexception

ошибка указывает на

con.prepareStatement("SELECT * FROM users WHERE Username=? AND Password=?"); and at a printlnine where i invoke the method

Где нулевой указатель? Я предполагаю, что con - это null, потому что getConnection() возвращает ноль

Mark 27.11.2018 09:21

Жалко, что точное место ошибки остается в секрете.

glglgl 27.11.2018 09:22

поделитесь своей трассировкой стека ошибок.

Pooja Aggarwal 27.11.2018 09:22

К сожалению, именно это вы получаете, когда начинающие программисты предпочитают не изучать основы. Вам следует изменить: System.out.println (e); в e.printStackTrace (); , покажите этот StackTrace в своем вопросе и покажите в коде, на какую строку он указывает.

Stultuske 27.11.2018 09:23

почему сигнатура вашего метода содержит «выдает исключение», в то время как ваш метод не может генерировать исключение?

Stultuske 27.11.2018 09:24

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

MATTIA PACCAMICCIO 27.11.2018 09:24

@MATTIAPACCAMICCIO прочтите мой первый комментарий, выполните эти шаги, и вы сможете точно сказать, в какой строке он встречается.

Stultuske 27.11.2018 09:25

Остальная часть кода выглядит нормально, эта строка должна вызывать Connection con = getConnection (); Можете ли вы проверить, получили ли вы объект подключения?

Varun 27.11.2018 09:26

java.lang.NullPointerException в database.userUtils.userLogin (userUtils.java:32) в database.userUtils.main (userUtils.java:13)

MATTIA PACCAMICCIO 27.11.2018 09:26

какая строка является строкой 32?

Scary Wombat 27.11.2018 09:27

мы не знаем, что это за строка, потому что у нас нет вашего кода. Все, что я вижу из этого фрагмента, это то, что вы не соблюдаете соглашения об именах

Stultuske 27.11.2018 09:27

Отправьте код в getConnection, очень вероятно, что он вернет null

Joakim Danielson 27.11.2018 09:40
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
1
12
72
2

Ответы 2

Boolean bool = null;

или

Connection con = getConnection();

должна быть проблема.

Если результат ничего не возвращает, bool будет null и будет возвращен функцией.

И проверка возврата getConnection() не нулевая.

Boolean bool = null; здесь не может быть проблемы. Исключение создается внутри этого метода (в блоке try), а не из метода, вызывающего этот метод.

Stultuske 27.11.2018 09:44

Да, вы правы, но, судя по тому, что он сказал о своих знаниях Java и догадках об исключении, я подумал, что он, возможно, неправильно понял проблему. Он сказал: «Вот полный код, часть подключения работает нормально, протестирована» и «Кроме того, он не дает никаких результатов, но я предполагаю, что это из-за исключения nullpointerexception». Вот почему я так думал.

Mehmet Özdemir 27.11.2018 11:46

Вместо null присвойте false вашей переменной bool попробуйте использовать boolean примитивный тип данных для возвращаемого типа class и bool вместо класса оболочки Boolean.

      Boolean bool = false;

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