Как отобразить данные в виде таблицы на клиенте, пока результат берется с локального сервера? - JavaFX - PullRequest
0 голосов
/ 19 апреля 2019

У меня есть результаты, которые взяты из базы данных, я хочу отправить результаты клиенту, а затем клиенту для отображения результатов в TableView.

Мне удалось преобразовать ResultSetна JSON объект, а затем отправить его в виде строки клиенту, результаты показали на клиенте, но я не уверен, как отобразить его на TableView.

на стороне сервера:

    try {

                    Connection conn = DriverManager.getConnection(CONNECTION_STRING);
                    Statement statement = conn.createStatement();

                    ResultSet resultSet = statement.executeQuery("SELECT * FROM inventory");

                    ArrayList<InventoryTable> hotelResult = new ArrayList<InventoryTable>();

                    try {
                        while(resultSet.next()){

                        hotelResult.add(new InventoryTable(
                               resultSet.getString(1),
                               resultSet.getString(2),
                               resultSet.getString(3),
                               resultSet.getDouble(4),
                               resultSet.getDouble(5),
                               resultSet.getDouble(6),
                               resultSet.getInt(7),
                               resultSet.getString(8),
                               resultSet.getString(9),
                               resultSet.getString(10),
                               resultSet.getString(11),
                               resultSet.getString(12)));

                   }}
                   catch (Exception e) {
                   }

                    String json = new Gson().toJson(hotelResult);
                    output.println(json);
                    conn.close();

                } catch (Exception e) {

                }

Клиентская сторона:

try (Socket socket = new Socket("Localhost", 5000)) {

            socket.setSoTimeout(20000);
            BufferedReader input = new BufferedReader(
                    new InputStreamReader(socket.getInputStream()));

            PrintWriter output = new PrintWriter(socket.getOutputStream(), true);

            String response;

            output.println(method);
            response = input.readLine();

            System.out.println(response);

            ObservableList data = FXCollections.observableArrayList(response);

            tableView.setItems(data);


        } catch (SocketTimeoutException e) {
            System.out.println("No response from the server! " + e);
        } catch (IOException e) {
            System.out.println("Error");
        }

Результат ответа выглядит примерно так:

[{"Col1":"1","Col2":"Hello",},{"Col1":"2","Col2":"Hello",},{"Col1":"3","Col2":"Hello",}]
...