简体   繁体   English

从另一个类获取变量值

[英]Getting variable value from another class

So I've got a class called Members and I got another class called DBConnect which will connect to the database, then store the values from the database to the Members class. 因此,我有一个名为Members的类,还有另一个名为DBConnect类,该类将连接到数据库,然后将数据库中的值存储到Members类。 I then want to use the values from the Members class in my other class called Controller . 然后,我想在另一个名为Controller类中使用来自Members类的值。 However, I'm creating a new instance of the Object in my Controller class, which if I use the method get() from there, it'll result in returning null . 但是,我在Controller类中创建了Object的新实例,如果从那里使用get()方法,它将导致返回null

However, if I do all operations within the DBConnect Class, it's fine. 但是,如果我在DBConnect类中执行所有操作,则可以。 It'll return the first name instead of null 它将返回名字而不是null

Members Class Members等级

package Database;

public class Members {

    private String firstName;

    public String getFirstName() {
        return firstName;
    }

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

DBConnect Class 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 Class 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());
        }
    }

What I understand is, when you create a new object, it'll result in initialising all variables back to 0. How else am I supposed to access the values besides making them static? 据我了解,当您创建一个新对象时,它将导致将所有变量初始化为0。除了使它们成为静态对象之外,我还应该如何访问这些值?

So my question is, how can I access the values I've set to my Members class from the DBConnect class in my Controller class? 所以我的问题是,我怎么能访问我设置为我的价值观Members类从DBConnect类在我的Controller类?

in DbConnect class change the return type of getData method to Member. 在DbConnect类中,将getData方法的返回类型更改为Member。

public Member getData(int id)

Now from controller you can access that member 现在,您可以从控制器访问该成员

Member member = dbConnect.getData(2);

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM