Я новичок в программировании на 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
Жалко, что точное место ошибки остается в секрете.
поделитесь своей трассировкой стека ошибок.
К сожалению, именно это вы получаете, когда начинающие программисты предпочитают не изучать основы. Вам следует изменить: System.out.println (e); в e.printStackTrace (); , покажите этот StackTrace в своем вопросе и покажите в коде, на какую строку он указывает.
почему сигнатура вашего метода содержит «выдает исключение», в то время как ваш метод не может генерировать исключение?
это так, но я заставил его вернуть нуль, потому что eclipse просит об этом, я принял предложение. Я не могу найти нулевой указатель, потому что он просто появляется в уловке, это большая проблема, я даже не могу найти ошибку
@MATTIAPACCAMICCIO прочтите мой первый комментарий, выполните эти шаги, и вы сможете точно сказать, в какой строке он встречается.
Остальная часть кода выглядит нормально, эта строка должна вызывать Connection con = getConnection (); Можете ли вы проверить, получили ли вы объект подключения?
java.lang.NullPointerException в database.userUtils.userLogin (userUtils.java:32) в database.userUtils.main (userUtils.java:13)
какая строка является строкой 32?
мы не знаем, что это за строка, потому что у нас нет вашего кода. Все, что я вижу из этого фрагмента, это то, что вы не соблюдаете соглашения об именах
Отправьте код в getConnection, очень вероятно, что он вернет null




Boolean bool = null;
или
Connection con = getConnection();
должна быть проблема.
Если результат ничего не возвращает, bool будет null и будет возвращен функцией.
И проверка возврата getConnection() не нулевая.
Boolean bool = null; здесь не может быть проблемы. Исключение создается внутри этого метода (в блоке try), а не из метода, вызывающего этот метод.
Да, вы правы, но, судя по тому, что он сказал о своих знаниях Java и догадках об исключении, я подумал, что он, возможно, неправильно понял проблему. Он сказал: «Вот полный код, часть подключения работает нормально, протестирована» и «Кроме того, он не дает никаких результатов, но я предполагаю, что это из-за исключения nullpointerexception». Вот почему я так думал.
Вместо null присвойте false вашей переменной bool попробуйте использовать boolean примитивный тип данных для возвращаемого типа class и bool вместо класса оболочки Boolean.
Boolean bool = false;
Где нулевой указатель? Я предполагаю, что
con- этоnull, потому чтоgetConnection()возвращает ноль