使用Java.util.Timer执行SQL查询时,JavaFX会抛出异常

时间:2018-05-03 00:23:15

标签: java mysql sql javafx javafx-8

我正在使用java.util.Timer每x秒执行一次SQL查询。 目的是跟踪某些数据库字段更改并几乎实时更新UI。 但是,当发生这些更改时,JavaFX会抛出以下错误:

  

线程“Timer-0”中的异常java.lang.IllegalStateException:不在FX应用程序线程上; currentThread = Timer-0

我正在使用MVC模型。

查看:

Timer timer = new Timer();
    timer.scheduleAtFixedRate(new TimerTask() {
        @Override
        public void run() {
            try {
                String status = dataAccessor.getOrderStatus(order.getorderID());
                orderStatusLabel.setText("Order Status: " + status);
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }, 0, 2000);

型号:

    public String getOrderStatus(int orderID) throws SQLException {
        Statement getStatus = conn.createStatement();
        ResultSet rs = getStatus.executeQuery(
             "SELECT status FROM the_order WHERE orderID = " + orderID);
        rs.next();
        return rs.getString(1);
    }

为什么会这样?

0 个答案:

没有答案