我是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
答案 0 :(得分:0)
尝试为布尔类型的返回类型而不是null为您的bool变量分配false,而是尝试使用布尔型原始数据类型来代替布尔值和包装类Boolean。
Boolean bool = false;
答案 1 :(得分:-1)
Boolean bool = null;
或
Connection con = getConnection();
应该是问题所在。
如果结果什么也不返回,则bool
将是null
并由函数返回。
检查返回的getConnection()
是否为空。