如何将sql中的日期放到tableview中的javafx中?

如何将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

我有一个tableview,我正试图从使用sql数据库创建的查询中填充它。其中一列包含一个日期值,当我运行该程序时,我收到一个错误,上面写着“com.microsoft.sqlserver.jdbc.SQLServerException:列名AppointmentDate无效”。下面是我的一些代码

houston.java

    //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语句中的一列,它只是计算其中一列的基础。