JavaFX-SQL查询的后台线程

我想知道是否有人可以帮助我解决有关在JavaFX中创建后台线程的问题!我目前有几个SQL查询,这些查询将数据添加到当前在JavaFX Application Thread上运行的UI(请参见下面的示例)。但是,当这些查询中的每一个执行时,由于它不在后台线程上运行,因此冻结了UI。我看过使用Task的各种示例,并且对它们有所了解,但是在执行数据库查询时却无法使它们正常工作,其中一些查询需要几秒钟来运行。


这是执行查询的方法之一:


public void getTopOrders() {

    customerOrders.clear();

    try {

        Connection con = DriverManager.getConnection(connectionUrl);

        //Get all records from table

        String SQL = "EXEC dbo.Get_Top_5_Customers_week";

        ResultSet rs;

        try (Statement stmt = con.createStatement();) {

            rs = stmt.executeQuery(SQL);


            while (rs.next()) {

                double orderValue = Double.parseDouble(rs.getString(3));

                customerOrders.add(new CustomerOrders(rs.getString(1),

                        rs.getString(2), "£" + formatter.format(orderValue),

                        rs.getString(4).substring(6, 8) + "/" + 

                        rs.getString(4).substring(4, 6) + "/" + 

                        rs.getString(4).substring(0, 4)));

            }

        }


    } catch (SQLException | NumberFormatException e) {

    }

}

每个处理的记录都添加到一个ObservableList中,该ObservableList链接到TableView或图形,或者只是将文本设置在标签上(取决于查询)。我如何在后台线程上执行查询,仍然让接口可以自由使用并从查询中进行更新


提前致谢


犯罪嫌疑人X
浏览 484回答 2
2回答
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java