Java Mysql查询中的NullPointerException

时间:2018-11-27 08:20:20

标签: java mysql nullpointerexception

我是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 个答案:

答案 0 :(得分:0)

尝试为布尔类型的返回类型而不是null为您的bool变量分配false,而是尝试使用布尔型原始数据类型来代替布尔值和包装类Boolean。

      Boolean bool = false;

答案 1 :(得分:-1)

Boolean bool = null;

Connection con = getConnection();

应该是问题所在。

如果结果什么也不返回,则bool将是null并由函数返回。

检查返回的getConnection()是否为空。