java - 使用 Java.util.Timer 执行 SQL 查询时 JavaFX 抛出异常
问题描述
我正在使用 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);
}
为什么会这样?
解决方案
推荐阅读
- mysql - MySQL 游标 - 插入中间表 - 2 列:1 列 - 设置值和 2 列 - 来自 SELECT 的值
- oracle - 奇怪的错误。从 SQL Server 调用 Oracle 过程可以正常工作,但不会更新输出参数
- python - 如何在熊猫数据框的特定列中对每个数组中的每个数字进行舍入?
- javascript - React 功能组件中的 onScroll
- python - 为什么这段代码在使用“\n”时会添加一个额外的空行?
- algorithm - 有效地将 float 和 double 值转换为保留值之间比较关系的字节
- python - 使用参数列表或元组在 pandas 中读取 SQL
- javascript - 如何使用 Puppeteer 覆盖本机功能
- xmlhttprequest - 尝试在邮递员中使用 USPS Api 进行地址验证时出错
- excel - 自动数据输入表