1

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. I then want to use the values from the Members class in my other class called Controller. 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.

However, if I do all operations within the DBConnect Class, it's fine. It'll return the first name instead of null

Members Class

package Database;

public class Members {

    private String firstName;

    public String getFirstName() {
        return firstName;
    }

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

DBConnect Class

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

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?

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?

2
  • OK, you seem to have a lot of misconceptions here. I think you need to learn more about how classes and objects work. You need to be working with an object instance here, not with the class. Commented Dec 15, 2018 at 4:53
  • May be you should create an instance in your getData method and then return this object. Members members = dbConnect.getData(2);? Commented Dec 15, 2018 at 5:23

1 Answer 1

1

in DbConnect class change the return type of getData method to Member.

public Member getData(int id)

Now from controller you can access that member

Member member = dbConnect.getData(2);
Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.