这个问题在这里已经有答案了:
什么是nullpointerexception,如何修复它(12个答案)
两年前关门了。
我是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
2条答案
按热度按时间klr1opcd1#
不要给bool变量赋值为null或false,而是尝试将boolean作为类和bool的返回类型的原始数据类型,而不是 Package 类boolean。
x4shl7ld2#
或
应该是问题所在。
如果结果为空,
bool
将null
并通过函数返回。并检查
getConnection()
不为空。