Java 从另一个类获取变量值
我有一个名为Java 从另一个类获取变量值,java,class,variables,null,Java,Class,Variables,Null,我有一个名为Members的类,还有一个名为DBConnect的类,它将连接到数据库,然后将数据库中的值存储到Members类。然后我想使用另一个名为Controller的类中Members类的值。但是,我正在我的Controller类中创建一个对象的新实例,如果从那里使用方法get(),它将返回null 但是,如果我在DBConnect类中执行所有操作,就可以了。它将返回第一个名称,而不是null 成员类 package Database; public class Members {
Members
的类,还有一个名为DBConnect
的类,它将连接到数据库,然后将数据库中的值存储到Members
类。然后我想使用另一个名为Controller
的类中Members
类的值。但是,我正在我的Controller
类中创建一个对象的新实例,如果从那里使用方法get()
,它将返回null
但是,如果我在DBConnect
类中执行所有操作,就可以了。它将返回第一个名称,而不是null
成员
类
package Database;
public class Members {
private String firstName;
public String getFirstName() {
return firstName;
}
public void setFirstName(String firstName) {
this.firstName = firstName;
}
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);
}
}
}
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());
}
}
DBConnect
Class
package Database;
public class Members {
private String firstName;
public String getFirstName() {
return firstName;
}
public void setFirstName(String firstName) {
this.firstName = firstName;
}
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);
}
}
}
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());
}
}
控制器
类
package Database;
public class Members {
private String firstName;
public String getFirstName() {
return firstName;
}
public void setFirstName(String firstName) {
this.firstName = firstName;
}
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);
}
}
}
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。除了使它们保持静态之外,我还应该如何访问这些值
因此,我的问题是,如何从我的
控制器类中的DBConnect
类访问我为成员设置的值?在DBConnect类中将getData方法的返回类型更改为Member
public Member getData(int id)
现在,您可以从控制器访问该成员
Member member = dbConnect.getData(2);
好吧,你似乎有很多误解。我认为您需要更多地了解类和对象是如何工作的。您需要在此处使用对象实例,而不是类。可能您应该在getData方法中创建一个实例,然后返回此对象Members=dbConnect.getData(2)代码>?