[英]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.