Получение значения переменной из другого класса - PullRequest
0 голосов
/ 15 декабря 2018

Итак, у меня есть класс с именем Members и другой класс с именем DBConnect, который подключится к базе данных, а затем сохранит значения из базы данных в класс Members.Затем я хочу использовать значения из класса Members в моем другом классе с именем Controller.Тем не менее, я создаю новый экземпляр объекта в моем классе Controller, который, если я буду использовать метод get() оттуда, приведет к возвращению null.

Однако, еслиЯ делаю все операции в классе DBConnect, это нормально.Будет возвращено имя вместо null

Members Класс

package Database;

public class Members {

    private String firstName;

    public String getFirstName() {
        return firstName;
    }

    public void setFirstName(String firstName) {
        this.firstName = firstName;
    }

DBConnect Класс

package Database;

import java.sql.*;

public class DBConnect {
    private Connection connection;
    private Statement statement;
    private ResultSet resultSet;

    Members members = new Members();

    public DBConnect() {
        try {
            Class.forName("com.mysql.cj.jdbc.Driver");

            connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/finance", "root", "");
            statement = connection.createStatement();
            System.out.println("Successfully connected to DATABASE.");
        } catch (Exception ex) {
            System.out.println("ERROR: Can't connect to the Database! -> " + ex);
        }
    }

    public void getData(int id) {
        try {
            String query = "select * from Members where MembersId = '" + id + "'";
            resultSet = statement.executeQuery(query);

            while (resultSet.next()) {
                members.setId(resultSet.getInt("MembersId"));
                members.setFirstName(resultSet.getString("MembersFirstName"));
                members.setLastName(resultSet.getString("MembersLastName"));
                members.setPosition(resultSet.getString("MembersPosition"));
                members.setHourlyRate(resultSet.getDouble("MembersHourlyRate"));
                members.setGraduated(resultSet.getString("MembersGraduated"));
                members.setLanguages(resultSet.getString("MembersLanguages"));
                members.setCountry(resultSet.getString("MembersCountry"));
                members.setCity(resultSet.getString("MembersCity"));
                members.setAddress(resultSet.getString("MembersAddress"));
            }
        }catch (Exception ex) {
            System.out.println("Error: " + ex);
        }
    }
}

Controller Класс

package sample;

import Database.DBConnect;
import Database.Members;
import javafx.fxml.FXML;
import javafx.fxml.Initializable;
import javafx.scene.control.Label;
import javafx.scene.effect.DropShadow;
import javafx.scene.image.Image;
import javafx.scene.input.MouseEvent;
import javafx.scene.layout.HBox;
import javafx.scene.paint.Color;
import javafx.scene.paint.ImagePattern;
import javafx.scene.shape.Circle;

import java.io.IOException;
import java.net.URISyntaxException;
import java.net.URL;
import java.util.ResourceBundle;


public class Controller implements Initializable {

    private DBConnect dbConnect;
    private Members members;

@FXML
    private HBox sidebarMembers;

@FXML
    private void openSidebarMembers(MouseEvent event) throws IOException {
        dbConnect = new DBConnect();
        dbConnect.getData(2);
        members = new Members();
        if (event.getSource() == sidebarMembers) {
            System.out.println(members.getFirstName());
        }
    }

Что я понимаю, когда вы создаете новый объект, это приведет к инициализации всех переменных обратно в 0. Как еще я должен получить доступ к значениям, кроме как сделать их статическими?

Итак, мой вопрос, как я могу получить доступ к значениям, которые я установил для моего Members класса из DBConnect класса в моем Controller классе?

1 Ответ

0 голосов
/ 15 декабря 2018

в классе DbConnect изменяет тип возвращаемого значения метода getData на Member.

public Member getData(int id)

Теперь из контроллера вы можете получить доступ к этому члену

Member member = dbConnect.getData(2);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...