Как заполнить TableView в JavaFX, используя псевдоним

При использовании свинга все работает нормально.

String sql= "SELECT idrepair as '№',"
        + "case when repairStatus in (0) then 'Not Done' "
        + "when repairStatus in (1) then 'Closed' "
        + "when repairStatus in (2) then 'Open' "
        + "else 'Unknown' end as  'Status'"
        + "FROM repairjournal";

Я просто хочу новый пользовательский интерфейс с использованием JavaFX, так что вот мой код, я бы сказал, что мои усилия:

    private void loadTableViewRepList(ObservableList oblist, Connection conn, TableView table) {
            oblist.clear();
            try {
                String sql = "SELECT * FROM repairjournal";
                pst = conn.prepareStatement(sql);
                rs = pst.executeQuery();
                while (rs.next()) {
                    oblist.add(new ModelTableRepairList(
                           rs.getString("idrepair"),
                           rs.getString("case when repairStatus in (0) then 'Not Done' "
               + "when repairStatus in (1) then 'Closed' "
               + "when repairStatus in (2) then 'Open' "
               + "else 'Unknown' end ")
                                       ));
                }
                table.setItems(oblist);
            } catch (SQLException ex) {
                Logger.getLogger(RepairListController
.class.getName()).log(Level.SEVERE, null, ex);
            }
        }

или

    private void loadTableViewRepList(ObservableList oblist, Connection conn, TableView table) {
                oblist.clear();
                try {
                    String sql = "SELECT idrepair, 
case when repairStatus in (0) then 
'Not Done.' when repairStatus in (1) then
 'Closed' when repairStatus in (2) then 'Open' 
                    else 'Unknown' end as 'Status' FROM repairjournal";
                    pst = conn.prepareStatement(sql);
                    rs = pst.executeQuery();
                    while (rs.next()) {
                        oblist.add(new ModelTableRepairList(
                               rs.getString("idrepair"),
                               rs.getString("repairStatus")
                                           ));
                    }
                    table.setItems(oblist);
                } catch (SQLException ex) {
                    Logger.getLogger(RepairListController
    .class.getName()).log(Level.SEVERE, null, ex);
                }
            }

Main error is no such column: 'repairStatus'

Любые идеи, как это исправить? Да, я могу переименовывать данные, но у меня больше таблиц с такими данными в БД.

getString("") возвращает информацию из столбца с именем String. У вас есть столбец с названием "case when repairStatus in (0) then 'Not Done' " + "when repairStatus in (1) then 'Closed' " + "when repairStatus in (2) then 'Open' " + "else 'Unknown' end "?
Sedrick 06.03.2019 21:03

Вы пробовали rs.getString(0), rs.getString(1)?

Sedrick 06.03.2019 21:05

Я бы посоветовал вам просто вернуть repairStatus (если он написан правильно), а затем выполнить логику case в коде. Возможно, вам придется посмотреть, как столбцы таблицы базы данных.

Sedrick 06.03.2019 21:08

1. "У вас есть столбец с именем..." - нет 2. "Вы пробовали использовать rs.getString(0)" - да. Он возвращает числа. То же, что и Select * form имя_таблицы. Мне нужно изменить его на String. Статус «1» означает, что выполнено, 0 — нет. Для пользователей.

klod 06.03.2019 21:38

3. «а затем сделать логику случая в коде». - как это сделать? В качели я использую случай if-else для заполнения меток правильной строкой вместо чисел. Но как заполнить таблицу - я понятия не имею, как я сказал в качели - было легко. idrepair и repairStatus — имена столбцов

klod 06.03.2019 21:47

Что-то вроде: String outputString = ""; String tempRepairStatus = rs.getString("repairStatus); if (tempReparStatus.equals("0");{//ouptString = "Not Done"}else if (...){...}else if (...){...} oblist.add(new ModelTableRepairList( rs.getString("idrepair"), outputString ));

Sedrick 06.03.2019 21:56

Я только что заметил, что вы сказали, что он возвращает числа. Вы должны использовать `int tempRepairStatus = rs.getInt(1); if (tempRepairStatus == 0){outString = "Не выполнено}...

Sedrick 06.03.2019 22:27

java.sql.SQLException: такого столбца нет: «1» — это 1-е значение в строке. Поэтому я могу предположить, что данные должны быть сглажены после их получения, а не до.

klod 06.03.2019 22:58
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
8
30
0

Другие вопросы по теме