如何将sql中的日期放到tableview中的javafx中?
我有一个tableview,我正试图从使用sql数据库创建的查询中填充它。其中一列包含一个日期值,当我运行该程序时,我收到一个错误,上面写着“com.microsoft.sqlserver.jdbc.SQLServerException:列名AppointmentDate无效”。下面是我的一些代码 houston.java如何将sql中的日期放到tableview中的javafx中?,java,sql,sql-server,javafx,Java,Sql,Sql Server,Javafx,我有一个tableview,我正试图从使用sql数据库创建的查询中填充它。其中一列包含一个日期值,当我运行该程序时,我收到一个错误,上面写着“com.microsoft.sqlserver.jdbc.SQLServerException:列名AppointmentDate无效”。下面是我的一些代码 houston.java //Set variable java.util.Date AppointmentDate; //Constructor publi
//Set variable
java.util.Date AppointmentDate;
//Constructor
public HoustonAppointments(Date appointmentDate) {
AppointmentDate = appointmentDate;
}
//Getter and setter
public java.util.Date getAppointmentDate() {
return AppointmentDate;
}
public void setAppointmentDate(java.util.Date appointmentDate) {
AppointmentDate = appointmentDate;
}
控制器类
public class HoustonAppointmentsController implements Initializable {
//Connect control from FXML
@FXML TableColumn<HoustonAppointments, Date> AppointmentDate;
@Override
public void initialize(URL url, ResourceBundle resourceBundle) {
//Set cell value factory
AppointmentDate.setCellValueFactory(new PropertyValueFactory<>("AppointmentDate"));
//Query function
try{
ResultSet rs = statement.executeQuery("SELECT Customer.FirstName, Customer.LastName,
City.CityName, Appointments.AppointmentDate as 'Appointment Date'\n" +
"FROM Orders INNER JOIN\n" +
"Customer ON Orders.CustomerID = Customer.CustomerID INNER JOIN\n" +
"ShootLocation ON Orders.LocationID = ShootLocation.LocationID INNER JOIN\n" +
"City INNER JOIN\n" +
"CityState ON City.CityID = CityState.CityID ON ShootLocation.CityStateID =
CityState.CityStateID INNER JOIN\n" +
"Appointments ON Customer.CustomerID = Appointments.CustomerID AND
ShootLocation.LocationID = Appointments.LocationID\n" +
"Where CityName = 'Houston'\n" +
"Order by Appointments.AppointmentDate desc");
while(rs.next()){
shootsObservableList.add(new HoustonAppointments(rs.getDate("AppointmentDate")));
}
conn.close();
statement.close();
} catch (SQLException e) {
e.printStackTrace();
}
houstonShootsTableView.setItems(shootsObservableList);
}
}
公共类HoustonAppointsController实现可初始化{
//从FXML连接控件
@FXML表格列指定日期;
@凌驾
公共void初始化(URL、ResourceBundle、ResourceBundle){
//设置单元格值工厂
任命日期。setCellValueFactory(新的PropertyValueFactory(“任命日期”);
//查询函数
试一试{
ResultSet rs=statement.executeQuery(“选择Customer.FirstName,Customer.LastName,
City.CityName,Appointments.AppointmentDate为“约会日期”\n+
“来自订单内部联接\n”+
“订单上的客户。CustomerID=客户。CustomerID内部联接\n”+
“Orders.LocationID=ShootLocation.LocationID内部联接上的ShootLocation\n”+
“城市内部联接\n”+
“City.CityID=ShootLocation.CityStateID=
CityState.CityStateID内部联接\n“+
“Customer.CustomerID上的约会=约会.CustomerID和
ShootLocation.LocationID=约会.LocationID\n“+
“其中CityName=‘Houston’\n”+
“任命命令。任命日期描述”);
while(rs.next()){
shootsObservableList.add(新的houston约会(rs.getDate(“约会日期”)));
}
康涅狄格州关闭();
语句。close();
}捕获(SQLE异常){
e、 printStackTrace();
}
houstonShootsTableView.setItems(shootsObservableList);
}
}
在as
子句中有一个空格。该列将命名为Appointment Date
,而不是AppointmentDate
。我会试试这个,虽然这个有效。在此上下文中,Thank@realponsian别名的意思是“这里有一个表达式,计算它并给它取这个名称,这样我就可以访问结果了”。这只是一种特殊情况,即表达式实际上是单个列名。因此,您的原始列名实际上不是这个select语句中的一列,它只是计算其中一列的基础。