Java 试图将数据加载到tableview中的resultSet日期出现NullPointerException

Java 试图将数据加载到tableview中的resultSet日期出现NullPointerException,java,mysql,resultset,Java,Mysql,Resultset,因此,每当我试图将ArrayList对象返回到FXCOLLECTIONS列表中时,我就会得到这个NPE 这是代码 方法将al返回到FXCOLLECTIONS public ArrayList<MeetBooking> selectMeetBookings() { ArrayList<MeetBooking> meetBookingArrayList = new ArrayList<>(); System.out.println("Trying

因此,每当我试图将ArrayList对象返回到FXCOLLECTIONS列表中时,我就会得到这个NPE

这是代码

方法将al返回到FXCOLLECTIONS

public ArrayList<MeetBooking> selectMeetBookings()
{
    ArrayList<MeetBooking> meetBookingArrayList = new ArrayList<>();
    System.out.println("Trying to select from table meetBooking");

    try
    {
        //Query the database and storing the result in an object of type ResultSet
        sqlString = "SELECT * FROM CPC.meetBooking ORDER BY bookingID ASC";
        rs = stmt.executeQuery(sqlString);

        //Use the methods of class ResultSet in a loop
        // to display all of the data in the result
        while (rs.next())
        {
            int id = rs.getInt("bookingID");
            Date bookingDateTime = rs.getDate("bookingDateTime");
            System.out.println(bookingDateTime.toString());
            int empID = rs.getInt("employeeID");
            String bookingcmnt = rs.getString("bookingComment");



            MeetBooking meetBooking = new MeetBooking();

            meetBooking.setBookingID(id);
            meetBooking.setBookingDate(bookingDateTime.toString());
            meetBooking.setEmployeeID(empID);
            meetBooking.setBookingComment(bookingcmnt);
            meetBookingArrayList.add(meetBooking);
        }

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

    Public Class MeetBooking
    //Method to set a date as a string utilises Stringproperty and                      //simplestringproperty
    public void setBookingDate(String value)
    {
    bookingDate.set(value);
    }

    //Controller access to first method
    public ArrayList<MeetBooking> getMeetBookings()
    {
    return dbcon.selectMeetBookings();
    }


    // UI access to controller.getMeetBooks
    meetBookingObservableList =      FXCollections.observableArrayList(controller.getMeetBookings());
public ArrayList selectMeetBookings()
{
ArrayList meetBookingArrayList=新建ArrayList();
System.out.println(“尝试从表meetBooking中选择”);
尝试
{
//查询数据库并将结果存储在ResultSet类型的对象中
sqlString=“按预订ID ASC从CPC.meetBooking订单中选择*”;
rs=stmt.executeQuery(sqlString);
//在循环中使用ResultSet类的方法
//显示结果中的所有数据
while(rs.next())
{
int id=rs.getInt(“bookingID”);
日期bookingDateTime=rs.getDate(“bookingDateTime”);
System.out.println(bookingDateTime.toString());
int empID=rs.getInt(“雇员ID”);
String bookingcmnt=rs.getString(“bookingcoment”);
MeetBooking MeetBooking=新MeetBooking();
meetBooking.setBookingID(id);
meetBooking.setBookingDate(bookingDateTime.toString());
meetBooking.setEmployeeID(empID);
会议预订。预订评论(预订CMNT);
meetBookingArrayList.add(meetBooking);
}
}
捕获(例外e)
{
e、 printStackTrace();
}
返回meetBookingArrayList;
}
公务舱会议预订
//方法使用Stringproperty和//simplestringproperty将日期设置为字符串
公共void setBookingDate(字符串值)
{
bookingDate.set(值);
}
//控制器访问第一种方法
公共阵列列表getMeetBookings()
{
返回dbcon.selectMeetBookings();
}
//对controller.getMeetBooks的UI访问
meetBookingObservableList=FXCollections.observableArrayList(controller.getMeetBookings());
我不太确定如何解决这个问题,但我认为日期是罪魁祸首。
但是,我已经调试了很长时间,需要您的专业知识。

NPE的一个潜在原因是,您的数据库中的某些列可能包含空值

如果bookingDateTime或employeeID列中的值为空,则以下行之一将出现异常:

Date bookingDateTime = rs.getDate("bookingDateTime");
System.out.println(bookingDateTime.toString());
int empID = rs.getInt("employeeID");
如果我记得我的Java,Date类可以包含null。但是,如果该值为null,则bookingDateTime.toString()将尝试将null转换为字符串。Null没有方法,因此您得到的是NullPointerException


此外,int不能存储Null,因此在尝试将Null强制到empID中时也会遇到类似的问题。

您是否尝试过创建断点并单步执行代码?或者回顾异常细节?这将为您提供导致问题的确切代码行。另外,MySQL数据库中是否有任何可为空的列?