Попытка заполнить табличное представление javafx элементами из базы данных

Элементы из моей базы данных не заполняют TableView, который я создал, используя javafx. Я создал метод с именем checkDB() и реализовал его для проверки доступа к базе данных, и он дает положительный результат, но главная проблема заключается в том, что мой TableView не заполнен элементами базы данных.

Ниже приведены классы, которые отвечают за менеджер баз данных...

Модель:

    package com.org.databases;

    import javafx.beans.property.StringProperty;
    import javafx.beans.property.SimpleStringProperty;
    import javafx.beans.property.IntegerProperty;
    import javafx.beans.property.SimpleIntegerProperty;

    public class Employee {


    private final StringProperty employee_First_Name=new 
    SimpleStringProperty(this,"empFirstName", null);
    private final StringProperty employee_Last_Name=new 
    SimpleStringProperty(this, "empLastName", null);
    private final IntegerProperty employee_ID=new 
    SimpleIntegerProperty(this, "empID", 0);

    public Employee(int id, String first_name, String last_name) {

    employee_First_Name.set(first_name);
    employee_Last_Name.set(last_name);
    employee_ID.set(id);
}

}

Программа доступа к данным:

                  package com.org.databases;

                  import java.sql.*;
                  import javafx.collections.ObservableList;
                  import java.util.Date;

                  public class EmployeeDao {
                  String user;
                  String password;
                  Connection conn;
PreparedStatement statement;
ResultSet rs;
String query;

public String getUsername() {

    return user;
}

public String getPassword() {

    return password;
}

public void createConnection(String db_url, String user, String password) {

    this.user=user;
    this.password=password;

    try {

        Class.forName("com.mysql.jdbc.Driver");
        conn=DriverManager.getConnection(db_url, getUsername(), getPassword());
        System.out.println("Connected to the database");
    }

    catch (SQLException | ClassNotFoundException s) {


    }


}

public void populate(ObservableList<Employee> empList) {

    try {

        query="SELECT * FROM persons";
        statement=conn.prepareStatement(query);
        rs=statement.executeQuery();

        while (rs.next()) {


            empList.add(new Employee(rs.getInt("id"), rs.getString("first_name"), rs.getString("last_name")));
        }

    }

    catch (Exception e) {


    }
}

public void insert(int id, String firstName, String lastName, Date joinDate) {

    try {

        query="INSERT INTO persons VALUES("+id+", "+firstName+", "+lastName+", "+joinDate+")";
        statement=conn.prepareStatement(query);
        rs=statement.executeQuery();

    }

    catch(Exception ex) {


    }
}

public void closeConnection() {

    try {

        conn.close();
        statement.close();
        rs.close();

    }

    catch (Exception ex) {


    }
}

public void checkDb() {

    try {

        query="SELECT * FROM persons";
        statement=conn.prepareStatement(query);
        rs=statement.executeQuery(query);

        while (rs.next()) {

            int id=rs.getInt("id");
            String firstName=rs.getString("first_name");
            String secondName=rs.getString("last_name");
            Date joinDate=rs.getDate("join_date");
            System.out.println(firstName+" "+secondName+" "+joinDate);
        }

    }

    catch (Exception e) {


    }
}
}      

Вид:

                                  package com.org.databases;

           import javafx.scene.control.TableView;
           import javafx.scene.control.TableColumn;
           import javafx.scene.control.cell.PropertyValueFactory;
           import javafx.scene.control.TableCell;
           import javafx.scene.control.*;
           import javafx.scene.layout.*;
           import javafx.stage.*;
           import javafx.scene.Scene;
           import javafx.collections.*;
           import javafx.scene.image.*;
           import javafx.geometry.Pos;

public class EmployeeMainview {

EmployeeDao eDao=new EmployeeDao();
ObservableList<Employee> empList=FXCollections.<Employee>observableArrayList();
TableView<Employee> empTable=new TableView<>(empList);
TableColumn idCol=new TableColumn("ID");
TableColumn firstNameCol=new TableColumn("FIRST NAME");
TableColumn lastNameCol=new TableColumn("LAST NAME");
Tab insertTab=new Tab("Add Employee");
Tab updateTab=new Tab("Update Employee Details");
Tab deleteTab=new Tab("Delete Employee");
TabPane tPane=new TabPane();
TextField firstNameField=new TextField();
TextField lastNameField=new TextField();
TextField idField=new TextField();
Label fName=new Label("First Name");
Label lName=new Label("Last Name");
Label idLbl=new Label("Id");
Label jDateLbl=new Label("Join Date");
Label updatefNameLabel=new Label("First Name");
Label updatelNameLabel=new Label("Last Name");
Label updateIdLabel=new Label("Id");
Label deleteIdLabel=new Label("Id");
DatePicker datePicker=new DatePicker();
Button addBtn=new Button("Add");
Button updateBtn=new Button("Update");
Button deleteBtn=new Button("Delete");

//Delete 

TextField deleteById=new TextField();

//Update

TextField updateById=new TextField();
TextField updateFirstName=new TextField();
TextField updateLastName=new TextField();

//Pane with insert items

GridPane insertPane=new GridPane();

//Pane with update items

GridPane updatePane=new GridPane();

//Pane with delete items

GridPane deletePane=new GridPane();

// Vbox with update 

VBox updateBox=new VBox();

//Vbox with insert 

VBox insertBox=new VBox();

//Vbox with delete 

VBox deleteBox=new VBox();

//Main Pane

HBox root=new HBox();

//Border pane for tabs

BorderPane tabBorderPane=new BorderPane();

//Border pane for table view

BorderPane tableBorderPane=new BorderPane();

//The Scene

Scene scene=null;

//The stage

Stage stage=new Stage();

public EmployeeMainview() {


}

public void instantiateParameters() {

    idCol.setCellValueFactory(new PropertyValueFactory<>("empID"));
    idCol.setCellFactory(col -> {
        TableCell<Employee, Integer> cell=new TableCell<Employee, Integer>() {

            @Override
            public void updateItem(Integer item, boolean empty) {

                super.updateItem(item, empty);
                this.setText(null);
                this.setGraphic(null);

                if (!empty) {

                    this.setText(""+item);
                }
            }
        };

        return cell;

    });
    firstNameCol.setCellValueFactory(new PropertyValueFactory<>("empFirstName"));

    firstNameCol.setCellFactory(col -> {
        TableCell<Employee, String> cell=new TableCell<Employee, String>() {

            @Override
            public void updateItem(String item, boolean empty) {

                super.updateItem(item, empty);
                this.setText(null);
                this.setGraphic(null);

                if (!empty) {

                    this.setText(item);
                }
            }
        };

        return cell;

    });
    lastNameCol.setCellValueFactory(new PropertyValueFactory<>("empLastName"));

    lastNameCol.setCellFactory(col -> {
        TableCell<Employee, String> cell=new TableCell<Employee, String>() {

            @Override
            public void updateItem(String item, boolean empty) {

                super.updateItem(item, empty);
                this.setText(null);
                this.setGraphic(null);

                if (!empty) {

                    this.setText(item);
                }
            }
        };

        return cell;

    });

    empTable.getColumns().addAll(idCol, firstNameCol, lastNameCol);

    Image insert=new Image(getClass().getResource("addicon.jpg").toExternalForm());
    ImageView insertImg=new ImageView(insert);
    Image update=new Image(getClass().getResource("updateicon.jpg").toExternalForm());
    ImageView updateImg=new ImageView(update);
    Image delete=new Image(getClass().getResource("deleteicon.jpg").toExternalForm());
    ImageView deleteImg=new ImageView(delete);
    insertImg.setFitHeight(10.0);
    insertImg.setFitWidth(10.0);
    updateImg.setFitHeight(10.0);
    updateImg.setFitWidth(10.0);
    deleteImg.setFitHeight(10.0);
    deleteImg.setFitWidth(10.0);
    insertTab.setGraphic(insertImg);
    updateTab.setGraphic(updateImg);
    deleteTab.setGraphic(deleteImg);

    insertPane.add(idLbl, 0, 4);
    insertPane.add(idField, 1, 4);
    insertPane.add(fName, 0, 5);
    insertPane.add(firstNameField, 1, 5);
    insertPane.add(lName, 0, 6);
    insertPane.add(lastNameField, 1, 6);
    insertPane.add(jDateLbl, 0, 7);
    insertPane.add(datePicker, 1, 7);
    insertPane.setAlignment(Pos.CENTER);
    insertPane.setHgap(5);
    insertPane.setVgap(5);
    insertBox.getChildren().addAll(insertPane, addBtn);
    insertBox.setSpacing(20);
    insertBox.setAlignment(Pos.CENTER);
    insertTab.setContent(insertBox);

    updatePane.add(updateIdLabel, 0, 0);
    updatePane.add(updateById, 1, 0);
    updatePane.add(updatefNameLabel, 0, 1);
    updatePane.add(updateFirstName, 1, 1);
    updatePane.add(updatelNameLabel, 0, 2);
    updatePane.add(updateLastName, 1, 2);
    updatePane.setHgap(5);
    updatePane.setVgap(5);
    updatePane.setAlignment(Pos.CENTER);
    updateBox.setSpacing(20);
    updateBox.setAlignment(Pos.CENTER);
    updateBox.getChildren().addAll(updatePane, updateBtn);
    updateTab.setContent(updateBox);

    deletePane.add(deleteIdLabel, 0, 0);
    deletePane.add(deleteById, 1, 0);
    deletePane.setHgap(5);
    deletePane.setAlignment(Pos.CENTER);
    deleteBox.getChildren().addAll(deletePane, deleteBtn);
    deleteBox.setAlignment(Pos.CENTER);
    deleteBox.setSpacing(20);
    deleteTab.setContent(deleteBox);

    tPane.getTabs().addAll(insertTab, updateTab, deleteTab);

    tPane.setTabClosingPolicy(TabPane.TabClosingPolicy.UNAVAILABLE);

    tabBorderPane.setTop(tPane);
    tableBorderPane.setCenter(empTable);
    root.getChildren().addAll(tabBorderPane, tableBorderPane);
    scene=new Scene(root, 640, 400);

    empList.add(new Employee(10, "King", "Dee"));
    empList.add(new Employee(12, "Rose", "Paul"));
    empTable.getItems().add(new Employee(18, "Ryan", "Kay"));
    scene.getStylesheets().addAll(getClass().getResource("data_styles.css").toExternalForm());
    stage.setScene(scene);
    stage.setResizable(false);


}

}

Форма входа:

                                              package com.org.databases;

import javafx.scene.control.*;
import javafx.scene.layout.*;
import javafx.scene.Scene;
import javafx.scene.text.Text;
import javafx.application.Application;
import javafx.stage.Stage;
import javafx.application.Platform;
import javafx.stage.StageStyle;
import javafx.geometry.Pos;
import javafx.scene.paint.Color;
import javafx.scene.shape.Circle;
import javafx.scene.effect.DropShadow;
import javafx.scene.image.*;

public class EmployeeLoginGUI extends Application {
EmployeeDao eDao=new EmployeeDao();
EmployeeMainview view=new EmployeeMainview();
@Override
public void start(Stage stage) {

    TextField usernameFld=new TextField();
    PasswordField pFld=new PasswordField();
    Text exit=new Text("X");
    Label databaseLabel=new Label("DATABASE MANAGER");
    Circle circleNode=new Circle(6.9);
    Button loginBtn=new Button("LOGIN");
    Image userImg=new Image(getClass().getResource("th.jpg").toExternalForm());
    ImageView usrImgView=new ImageView(userImg);
    Image passImg=new Image(getClass().getResource("th-4.jpg").toExternalForm());
    ImageView passImgView=new ImageView(passImg);
    AnchorPane root=new AnchorPane();
    GridPane pane=new GridPane();
    usernameFld.setPrefWidth(250);
    pFld.setPrefWidth(250);
    usernameFld.setPrefHeight(50);
    pFld.setPrefHeight(50);
    usernameFld.setPromptText("Enter Username");
    exit.setWrappingWidth(10.7);
    exit.setStyle("-fx-font-weight: bold; -fx-fill: #ffffff;");
    exit.setOnMousePressed(e -> {
        Platform.exit();
    });

    loginBtn.setOnAction(e -> {
        eDao.createConnection("jdbc:mysql://localhost:3306/employee", usernameFld.getText(), pFld.getText());
        eDao.checkDb();
        stage.hide();

        view.stage.show();



        view.instantiateParameters();
    });
    databaseLabel.setEffect(new DropShadow());
    databaseLabel.setAlignment(Pos.CENTER);
    loginBtn.getStyleClass().add("loginbutton");
    databaseLabel.getStyleClass().add("databaseLabel");
    usrImgView.setFitHeight(20.0);
    usrImgView.setFitWidth(20.0);
    passImgView.setFitHeight(20.0);
    passImgView.setFitWidth(20.0);
    pane.add(usrImgView, 2, 0);
    pane.add(usernameFld, 4, 0);
    pane.add(passImgView, 2, 1);
    pane.add(pFld, 4, 1);
    pane.setVgap(5);
    pane.setAlignment(Pos.CENTER);
    circleNode.setFill(Color.ORANGE);
    root.getChildren().addAll(circleNode, exit, databaseLabel, pane, loginBtn);
    AnchorPane.setLeftAnchor(databaseLabel, 100.0);
    AnchorPane.setTopAnchor(databaseLabel, 50.0);
    AnchorPane.setRightAnchor(databaseLabel, 100.0);
    AnchorPane.setTopAnchor(pane, 100.0);
    AnchorPane.setRightAnchor(pane, 10.0);
    AnchorPane.setLeftAnchor(pane, 10.0);
    AnchorPane.setTopAnchor(exit, 0.0);
    AnchorPane.setRightAnchor(exit, 0.0);
    AnchorPane.setTopAnchor(circleNode, 0.0);
    AnchorPane.setRightAnchor(circleNode, 0.0);
    AnchorPane.setTopAnchor(loginBtn, 220.0);
    AnchorPane.setRightAnchor(loginBtn, 150.0);
    AnchorPane.setLeftAnchor(loginBtn, 150.0);

    Scene scene=new Scene(root, 400, 400, Color.TRANSPARENT);
    scene.getStylesheets().addAll(getClass().getResource("data_styles.css").toExternalForm());
    stage.setScene(scene);
    stage.initStyle(StageStyle.UNDECORATED);
    stage.show();
}

public static void main(String[] args) {
    Application.launch(args);
}
}

0 ответов

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