#sqlite #javafx
#sqlite #javafx
Вопрос:
При использовании swing все работает просто отлично.
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);
}
}
Основная ошибка — нет такого столбца: ‘repairStatus’
Есть идеи, как это исправить? Да, я могу переименовывать данные, но у меня есть больше таблиц с такими данными в DB.
Комментарии:
1.
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 "
?2. Вы пробовали
rs.getString(0), rs.getString(1)
?3. Я бы посоветовал вам просто вернуть repairStatus (если оно написано правильно), а затем выполнить логику обращения в коде. Возможно, вам потребуется взглянуть, как столбцы таблицы вашей базы данных.
4. 1. «У вас есть столбец с именем …» — нет 2. «Вы пробовали rs.getString(0)» — да. Он возвращает числа. То же, что и Select * form tablename. Мне нужно изменить его на String. Статус ‘1’ означает, что это выполнено, 0 — нет. Для пользователей.
5. 3. «а затем выполните логику обращения в коде». — как это сделать? В swing я использую регистр if-else для заполнения меток правильной строкой вместо чисел. Но как заполнить Table — я понятия не имею, как я уже говорил в swing — было легко. idrepair и repairStatus — имена столбцов