mysql - 我如何在JavaFX中进行异步数据库

标签 mysql database javafx

我有一个问题。我怎样才能在JavaFX中做异步数据库。我知道 SwingWoker 存在,但我读到我不能在 JavaFX 中使用它。我读到了有关 Task 的内容,但我可以将结果转换为 ObservableList,但我需要普通的 LinkedList。 我正在尝试连接 mysql 数据库

我知道这个论坛有很多关于javafx中数据库的回答,但所有结果都转换为ObservableList

感谢您的所有回答。

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;
}

FlightController服务

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

}

MainController.java

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

最佳答案

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();

现在 task.getValue() 部分是关键部分,使用此方法,您可以在准备就绪后立即检索使用任务计算的值(因此是成功的钩子(Hook)) .

关于mysql - 我如何在JavaFX中进行异步数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27480546/

相关文章:

php - 如何在 Laravel 的产品创建页面中显示类别

database - 如何通过(S)FTP管理SQLite数据库?

database - Haskell 强类型数据库

php - 无法将日期存储在数据库中

JavaFx: slider - 带颜色的双向移动

java - 我无法从其他类访问 GUI(lambda 表达式)中使用的变量

java - 使 JavaFX 应用程序窗口外部元素在所有操作系统中保持相似

mysql - 在 Laravel 5.2 中使用多个 MySQL 数据库连接查询关系是否存在

mysql - 如何根据第一个表中的值左连接另一个表?

mysql - 在 Cloud66 上重新启动 Mysql Server 和 Rails 服务器时,如何最大限度地减少停机时间和用户面临的错误?