当前位置: 首页 > 知识库问答 >
问题:

我如何在JavaFX中做异步数据库[重复]

充高扬
2023-03-14

我有一个问题。如何在JavaFX中实现异步数据库?我知道现有SwingWoker,但是我听说我不能在JavaFX中使用它。我读了关于任务,但我可以把结果转换成可观的列表,但我需要正常的链接列表。我正在尝试连接到mysql数据库

我知道这个论坛有很多关于javafx中数据库的答案,但所有结果都转换为可观察列表

谢谢你的回答。

FlightControllerTask.java

public class FlightControllerTask extends Task<LinkedList<Flight>>{
private final static int MAX=10000;
ArrayList<Airport> airportList=new ArrayList<>()
@Override
protected LinkedList<Flight> call() throws Exception {
    for (int i = 0; i < MAX; i++) {  
        updateProgress(i, MAX);  
        Thread.sleep(5);  
   }  

    LinkedList<Flight> flightList = new LinkedList<>();
    Connection c ;
    c = DBConnector.connect(); 
    String SQL = "SELECT flight.idflight, airport.nameAirport, airport.nameAirport, flight.departureTime FROM flight INNER JOIN airport";
    ResultSet rs = c.createStatement().executeQuery(SQL);  
    while(rs.next()){  
        flightList.add(new Flight(rs.getInt("idflight"), rs.getString("flightFrom"), rs.getString("flightTo"), rs.getTime("departureTime")));       
   }  

    return flightList;
}

飞行控制器服务

public class FlightControllerService extends Service<LinkedList<Flight>>{
@Override  
protected Task<LinkedList<Flight>> createTask() {  
     return new FlightControllerTask();  
}  

}

主控制器.java

final FlightControllerService service= new FlightControllerService();
    ReadOnlyObjectProperty<LinkedList<Flight>> flightList =service.valueProperty();
    flightList.get();

共有1个答案

安毅
2023-03-14
public class FlightControllerTask extends Task<LinkedList<Flight>>{
  @Override
  protected LinkedList<Flight> call() throws Exception { 
    // load data
    return data;
  }
}

// usage:
FlightControllerTask task = new FlightControllerTask();
task.setOnSucceeded(ev -> task.getValue());
new Thread(task).start();

现在是带有任务的部分。getValue()是关键部分,使用此方法,您可以在任务准备就绪时立即检索任务计算的值(从而获得成功的钩子)。

 类似资料:
  • 问题内容: 我有很多关于在Android应用程序中处理异步数据库的问题。 由于我知道数据库是异步的,因此我尝试了几种方法来处理它。如您在代码中所见,我有两个函数需要在数据库中使用数组。我的第一个函数()将对数据库中的数组应用更改,而我的第二个函数()需要将此数组与从我的第一个函数中应用的更改一起使用。这是我的代码: 这是setArray_for_database的代码: 这是我的把戏。具有另一个内

  • 如果组件不是和路由绑定的页面组件,原则上是不可以使用异步数据的。因为 Nuxt.js 仅仅扩展增强了页面组件的 data 方法,使得其可以支持异步数据处理。 对于非页面组件,有两种方式可以实现数据的异步获取: 在组件的 mounted 方法里面实现异步获取数据的逻辑,之后设置组件的数据,限制是:不支持服务端渲染。 在页面组件的asyncData或fetch方法中进行API调用,并将数据作为prop

  • 我可能遗漏了一些非常明显的东西,但我想做的是在组件之间异步共享从服务器获取的数据。 我的服务看起来是这样的: 因为流程是异步的,所以我需要promise响应,但是promise的响应返回实际的subscribe对象,而不是返回的< code>data.json。 这是一个配置文件页面,它由嵌套路由组成,所以我不能将数据传递给路由组件。路由组件之一是帖子,加载配置文件后,它应该开始获取服务中当前用户

  • 我已尝试在当前区域外删除脚本: 我得到这个错误:

  • Nuxt.js 扩展了 Vue.js,增加了一个叫 asyncData 的方法,使得我们可以在设置组件的数据之前能异步获取或处理数据。 使用Nuxt.js的异步数据 了解如何使用Nuxt.js管理异步数据。 由VueSchool制作视频课程,用于支持Nuxt.js开发。 asyncData 方法 asyncData方法会在组件(限于页面组件)每次加载之前被调用。它可以在服务端或路由更新之前被调用。

  • 我有一个PostgreSQL 8.4数据库,其中有一些表和视图,它们实际上是一些表上的联接。我使用NetBeans7.2(如本文所述)创建基于REST的服务,这些服务派生自这些视图和表,并将它们部署到Glassfish 3.1.2.2服务器上。 还有另一个进程,它异步更新用于构建视图的某些表中的内容。我可以直接查询视图和表,并看到这些更改已经正确发生。但是,当从基于REST的服务中提取时,这些值与