Tableview не показывает данные из бд - Java

Узнай цену своей работы

Формулировка задачи:

Всем привет! При написании курсовой встретился со следущей проблемой: В Tableview не отображаются данные из бд. Они туда заносятся, но не отображаются. Не могу понять, в чём проблема. Может кто сталкивался с таким? Сlass Table:
Листинг программы
  1. package work;
  2. import javafx.beans.property.SimpleStringProperty;
  3. import javafx.beans.property.StringProperty;
  4. /**
  5. * Created by 111 on 19.12.2016.
  6. */
  7. public class Table {
  8. private final StringProperty nameExe;
  9. private final StringProperty groupMuscle;
  10. private final StringProperty workWeight;
  11. private final StringProperty coutPodh;
  12. private final StringProperty date;
  13. public Table(String nameExe, String groupMuscle, String workWeight, String coutPodh, String date) {
  14. this.nameExe = new SimpleStringProperty(nameExe);
  15. this.groupMuscle = new SimpleStringProperty(groupMuscle);
  16. this.workWeight =new SimpleStringProperty(workWeight);
  17. this.coutPodh = new SimpleStringProperty(coutPodh);
  18. this.date = new SimpleStringProperty(date);
  19. }
  20.  
  21. public String getnameExe() {return nameExe.get();}
  22. public String getgroupMuscle() {return groupMuscle.get();}
  23. public String getworkWeight() {return workWeight.get();}
  24. public String getcoutPodh() {return coutPodh.get();}
  25. public String getdate() {return date.get();}
  26. public void setnameExe(String value) { nameExe.set(value);}
  27. public void setgroupMuscle(String value) { groupMuscle.set(value);}
  28. public void setworkWeight(String value) { workWeight.set(value);}
  29. public void setcoutPodh(String value) {coutPodh.set(value);}
  30. public void setdate(String value) { date.set(value);}
  31. public StringProperty nameExePropety() {return nameExe;}
  32. public StringProperty groupMusclePropety() {return groupMuscle;}
  33. public StringProperty workWeightPropety() {return workWeight;}
  34. public StringProperty coutPodhPropety() {return coutPodh;}
  35. public StringProperty datePropety() {return date;}
  36. }
Метод, заполняющий Tableview:
Листинг программы
  1. private static Statement st;
  2. private static ObservableList<Table> data = FXCollections.observableArrayList();
  3.  
  4. @FXML
  5. private TableView<Table> table;
  6. @FXML
  7. private TableColumn<Table,String> exeCol;
  8. @FXML
  9. private TableColumn<Table,String> groupCol;
  10. @FXML
  11. private TableColumn<Table,String> workWeightCol;
  12. @FXML
  13. private TableColumn<Table,String> coutCol;
  14. @FXML
  15. private TableColumn<Table,String> dateCol;
  16. public void setDataBaseInfo() throws SQLException {
  17. db.setConnect();
  18. Controller con = new Controller();
  19. st= db.connect.createStatement();
  20. ResultSet rs2 = st.executeQuery("Select DISTINCT Exercise.nameExe, Muscle.groupMuscle, Training.workWeight, Training.coutPodh, Training.date From Training,Exercise, Muscle Where Training.idlog =(SELECT Authoriz.idlog FROM Authoriz WHERE Authoriz.login = '"+con.a+"' AND Authoriz.password = '"+con.b+"') AND Training.id_muscle = Muscle.id_muscle AND Training.id_exercise=Exercise.id_exercise;");
  21. while (rs2.next())
  22. {
  23. data.add(new Table(rs2.getString("nameExe"),rs2.getString("groupMuscle"),rs2.getString("workWeight"),rs2.getString("coutPodh"),rs2.getString("date")));
  24. table.setItems(data);
  25. }
  26. }
  27. @Override
  28. public void initialize(URL location, ResourceBundle resources) {
  29. exeCol.setCellValueFactory(new PropertyValueFactory<>("nameExe"));
  30. groupCol.setCellValueFactory(new PropertyValueFactory<>("groupMuscle"));
  31. workWeightCol.setCellValueFactory(new PropertyValueFactory<>("workWeight"));
  32. coutCol.setCellValueFactory(new PropertyValueFactory<>("coutPodh"));
  33. dateCol.setCellValueFactory(new PropertyValueFactory<>("date"));
  34. try {
  35. setDataBaseInfo();
  36. } catch (SQLException e) {
  37. e.printStackTrace();
  38. }
  39. }
Код FXML-файла:
Листинг программы
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <?import javafx.scene.control.Accordion?>
  3. <?import javafx.scene.control.Button?>
  4. <?import javafx.scene.control.ComboBox?>
  5. <?import javafx.scene.control.DatePicker?>
  6. <?import javafx.scene.control.Label?>
  7. <?import javafx.scene.control.Menu?>
  8. <?import javafx.scene.control.MenuBar?>
  9. <?import javafx.scene.control.MenuItem?>
  10. <?import javafx.scene.control.SplitPane?>
  11. <?import javafx.scene.control.Tab?>
  12. <?import javafx.scene.control.TabPane?>
  13. <?import javafx.scene.control.TableColumn?>
  14. <?import javafx.scene.control.TableView?>
  15. <?import javafx.scene.control.TextField?>
  16. <?import javafx.scene.control.TitledPane?>
  17. <?import javafx.scene.layout.AnchorPane?>
  18. <AnchorPane id="AnchorPane" maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="400.0" prefWidth="800.0" xmlns="http://javafx.com/javafx/8.0.111" xmlns:fx="http://javafx.com/fxml/1" fx:controller="work.WorkController">
  19. <children>
  20. <Accordion prefHeight="400.0" prefWidth="800.0">
  21. <panes>
  22. <TitledPane animated="false" prefHeight="310.0" prefWidth="800.0" text="Информация о тренеровках" fx:id="x1">
  23. <content>
  24. <SplitPane dividerPositions="0.17669172932330826" focusTraversable="true" prefHeight="160.0" prefWidth="200.0">
  25. <items>
  26. <AnchorPane minHeight="0.0" minWidth="0.0" prefHeight="349.0" prefWidth="282.0">
  27. <children>
  28. <MenuBar layoutX="0.0" layoutY="0.0" prefHeight="25.0" prefWidth="236.0">
  29. <menus>
  30. <Menu mnemonicParsing="false" text="File">
  31. <items>
  32. <MenuItem mnemonicParsing="false" text="Close" />
  33. </items>
  34. </Menu>
  35. <Menu mnemonicParsing="false" text="Edit">
  36. <items>
  37. <MenuItem mnemonicParsing="false" text="Delete" />
  38. </items>
  39. </Menu>
  40. <Menu mnemonicParsing="false" text="Help">
  41. <items>
  42. <MenuItem mnemonicParsing="false" text="About" />
  43. </items>
  44. </Menu>
  45. </menus>
  46. </MenuBar>
  47. </children>
  48. </AnchorPane>
  49. <AnchorPane minHeight="0.0" minWidth="0.0" prefHeight="299.0" prefWidth="416.0">
  50. <children>
  51. <TableView fx:id="table" editable="true" prefHeight="200.0" prefWidth="655.0">
  52. <columns>
  53. <TableColumn fx:id="exeCol" prefWidth="94.0" text="Упражнение" />
  54. <TableColumn fx:id="groupCol" prefWidth="144.0" text="Группа мышц" />
  55. <TableColumn fx:id="workWeightCol" prefWidth="107.0" text="Рабочий вес" />
  56. <TableColumn fx:id="coutCol" prefWidth="166.0" text="Количество подходов" />
  57. <TableColumn fx:id="dateCol" prefWidth="143.0" text="Дата тренировки" />
  58. </columns>
  59. </TableView>
  60. </children></AnchorPane>
  61. </items>
  62. </SplitPane>
  63. </content>
  64. </TitledPane>
  65. <TitledPane animated="false" prefHeight="367.0" prefWidth="594.0" text="Редактирование данных" fx:id="x2">
  66. <content>
  67. <AnchorPane id="Content" minHeight="0.0" minWidth="0.0" prefHeight="180.0" prefWidth="200.0">
  68. <children>
  69. <TabPane layoutX="0.0" layoutY="0.0" prefHeight="352.0" prefWidth="800.0" tabClosingPolicy="UNAVAILABLE">
  70. <tabs>
  71. <Tab onSelectionChanged="#fillinsertTypeExeCombo" text="Упражнения">
  72. <content>
  73. <AnchorPane id="Content" minHeight="0.0" minWidth="0.0" prefHeight="264.0" prefWidth="200.0">
  74. <children>
  75. <TextField fx:id="insertNameExe" layoutX="146.0" layoutY="54.0" prefHeight="25.0" prefWidth="200.0" />
  76. <Button fx:id="insertExe" layoutX="14.0" layoutY="90.0" mnemonicParsing="false" onAction="#insertExercise" prefWidth="126.0" text="Добавить" />
  77. <Label layoutX="11.0" layoutY="58.0" text="Название упражнения" />
  78. <Label layoutX="24.0" layoutY="27.0" text="Группа мышц" />
  79. <ComboBox fx:id="insertTypeExeCombo" layoutX="146.0" layoutY="23.0" prefHeight="25.0" prefWidth="200.0" />
  80. </children>
  81. </AnchorPane>
  82. </content>
  83. </Tab>
  84. <Tab text="Тренировки">
  85. <content>
  86. <AnchorPane id="Content" minHeight="0.0" minWidth="0.0" prefHeight="180.0" prefWidth="200.0">
  87. <children>
  88. <TextField fx:id="workWeightTextField" layoutX="142.0" layoutY="14.0" />
  89. <TextField fx:id="countPodhTextField" layoutX="142.0" layoutY="58.0" />
  90. <ComboBox fx:id="insertTypeExeCombo2" layoutX="142.0" layoutY="103.0" onAction="#fillinsertNameExeCombo" prefWidth="150.0" />
  91. <ComboBox fx:id="insertNameExeCombo" layoutX="142.0" layoutY="149.0" prefWidth="150.0" />
  92. <DatePicker fx:id="dateTrainingPicker" layoutX="141.0" layoutY="195.0" prefHeight="25.0" prefWidth="152.0" />
  93. <Label layoutX="29.0" layoutY="18.0" text="Рабочий вес" />
  94. <Label layoutX="28.0" layoutY="199.0" text="Дата тренировки" />
  95. <Label layoutX="14.0" layoutY="62.0" text="Количество подходов" />
  96. <Label layoutX="26.0" layoutY="107.0" text="Группа мышц" />
  97. <Label layoutX="13.0" layoutY="153.0" text="Название упражнения" />
  98. <Button fx:id="addTrainBut" layoutX="142.0" layoutY="243.0" mnemonicParsing="false" onAction="#insertTraining" prefHeight="25.0" prefWidth="151.0" text="Button" />
  99. </children></AnchorPane>
  100. </content>
  101. </Tab>
  102. </tabs>
  103. </TabPane>
  104. </children>
  105. </AnchorPane>
  106. </content>
  107. </TitledPane>
  108. </panes>
  109. </Accordion>
  110. </children>
  111. </AnchorPane>

Решение задачи: «Tableview не показывает данные из бд»

textual
Листинг программы
  1. ResultSet rs2 = st.executeQuery("Select DISTINCT Exercise.nameExe, Muscle.groupMuscle, Training.workWeight, Training.coutPodh, Training.date From Training,Exercise, Muscle Where Training.idlog =(SELECT Authoriz.idlog FROM Authoriz WHERE Authoriz.login = '"+con.a+"' AND Authoriz.password = '"+con.b+"') AND Training.id_muscle = Muscle.id_muscle AND Training.id_exercise=Exercise.id_exercise;");
  2.  
  3.         while (rs2.next())
  4.         {
  5.             data.add(new Table(rs2.getString("Exercise.nameExe"),rs2.getString("Muscle.groupMuscle"),rs2.getString("Training.workWeight"),rs2.getString("Training.coutPodh"),rs2.getString("Training.date")));
  6.             table.setItems(data);
  7.  
  8.         }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

9   голосов , оценка 3.333 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут