Java 试图将数据加载到tableview中的resultSet日期出现NullPointerException
因此,每当我试图将ArrayList对象返回到FXCOLLECTIONS列表中时,我就会得到这个NPE 这是代码 方法将al返回到FXCOLLECTIONSJava 试图将数据加载到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
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数据库中是否有任何可为空的列?