Welcome to the Java Programming Forums


The professional, friendly Java community. 21,500 members and growing!


The Java Programming Forums are a community of Java programmers from all around the World. Our members have a wide range of skills and they all have one thing in common: A passion to learn and code Java. We invite beginner Java programmers right through to Java professionals to post here and share your knowledge. Become a part of the community, help others, expand your knowledge of Java and enjoy talking with like minded people. Registration is quick and best of all free. We look forward to meeting you.


>> REGISTER NOW TO START POSTING


Members have full access to the forums. Advertisements are removed for registered users.

Results 1 to 4 of 4

Thread: Getting a variable from another class \\

  1. #1
    Junior Member
    Join Date
    Oct 2022
    Posts
    2
    Thanks
    0
    Thanked 0 Times in 0 Posts

    Default Getting a variable from another class \\

    Добрый день, я новичок, пытаюсь решить эту проблему уже несколько дней, конкретнее:

    В моем приложении более 10 сцен, все данные, которые я ввожу в каждой сцене должны записываться в БД, это я реализовал, но, есть 2 сцены, данные из которых должны записаться одной строкой в БД. , сейчас же они записываются двумя разными строками, так как я не могу получить переменную из nomerDefect.java, defect1Controller.java, пробовал наследовать данные , но тогда мой nomer_field принимает null и программа не работает, задавал ему начальное значение "0", после чего значение менялось, все равно не работает, так же вызывал переменную через nomerDefect nomer = new nomerDefect(String NZ); описывал все через конструктор, но безуспешно.
    Буду рад если кто то поможет разобраться в этом


    Код класса nomerDefect
    /* Окно для ввода номера дефектовки */
    import java.io.IOException;
    import java.net.URL;
    import java.util.ResourceBundle;
    import javafx.fxml.FXML;
    import javafx.fxml.FXMLLoader;
    import javafx.scene.Parent;
    import javafx.scene.Scene;
    import javafx.scene.control.Button;
    import javafx.scene.control.TextField;
    import javafx.stage.Stage;
     
    public class nomerDefect {
     
        @FXML
        private ResourceBundle resources;
     
        @FXML
        private URL location;
     
        @FXML
        private Button nomer_but;
     
        @FXML 
        public TextField nomer_field;
     
        @FXML
        void initialize() {
     
          dataBaseHandler dbHandler1 = new dataBaseHandler(); // для записи в базу данных
     
          nomer_but.setOnAction(event -> {
          String NZ = nomer_field.getText().trim();
     
            if (NZ.equals("")){
              System.out.println("Для продолжения, требуется ввести номер заказа");
            } else { 
            dbHandler1.signUpDefectovka1(NZ);// запись номера заказа в базу данных
              System.out.println("запись номера не прописана в коде программы"); // оповещение записи
              nomer_but.getScene().getWindow().hide();
              FXMLLoader loader = new FXMLLoader();
              loader.setLocation(getClass().getResource("defect1Controller.fxml"));
     
              try {
                loader.load();
              } catch (IOException e) {
     
                e.printStackTrace();
              }
              Parent root = loader.getRoot();
              Stage stage = new Stage();
              stage.setScene(new Scene(root));
              stage.showAndWait();
            } 
     
      });
     
    }
    }

    Код класса defect1Controller

    /* Окно для ввода габаритных размеров гидроцилиндра */
    import java.io.IOException;
    import java.net.URL;
    import java.util.ResourceBundle;
    import javafx.fxml.FXML;
    import javafx.fxml.FXMLLoader;
    import javafx.scene.Parent;
    import javafx.scene.Scene;
    import javafx.scene.control.TextField;
    import javafx.scene.control.Button;
    import javafx.stage.Stage;
     
    public class defect1Controller {
     
        @FXML
        private ResourceBundle resources;
     
        @FXML
        private URL location;
     
        @FXML
        private TextField D1_field;
     
        @FXML
        private TextField D2_Field;
     
        @FXML
        private TextField L1_Field;
     
        @FXML
        private TextField L_Field;
     
        @FXML
        private TextField dp_Field;
     
        @FXML
        private TextField d_Field;
     
        @FXML
        private Button gab_but;
     
        @FXML
        void initialize() {
     
          dataBaseHandler dbHandler1 = new dataBaseHandler(); // для записи в базу данных
     
          gab_but.setOnAction(event -> {
     
            String D1 = D1_field.getText().trim();
            String D2 = D2_Field.getText().trim();
            String L1 = L1_Field.getText().trim();
            String L = L_Field.getText().trim();
            String d = dp_Field.getText().trim();
            String dp = d_Field.getText().trim();
     
     
            if (D1.equals("")){
              System.out.println("Для продолжения,требуется ввести диаметр гильзы D1");
            } else if (D2.equals("")){
              System.out.println("Для продолжения,требуется ввести диаметр гильзы D2");
            } else if (dp.equals("")){
              System.out.println("Для продолжения,требуется ввести диаметр пальцев dp");
            } else if (L.equals("")){
              System.out.println("Для продолжения,требуется ввести ход поршня L");
            } else if (L1.equals("")){
              System.out.println("Для продолжения,требуется ввести уствновочный размер гидроцилиндра L1");
            } else if (d.equals("")){
              System.out.println("Для продолжения,требуется ввести диаметр штока d");
            } else {
              dbHandler1.signUpDefectovka(D1, D2, L1, L, d, dp);
              System.out.println("Все введенный данные успешно записаны в таблицу Defectovka базы данных GTS");
            gab_but.getScene().getWindow().hide();
            FXMLLoader loader = new FXMLLoader();
            loader.setLocation(getClass().getResource("defect2Controller.fxml"));
     
            try {
              loader.load();
            } catch (IOException e) {
     
              e.printStackTrace();
            }
            Parent root = loader.getRoot();
            Stage stage = new Stage();
            stage.setScene(new Scene(root));
            stage.show();
    }
    });
        }
      }

    Код класса dataBaseHandler где происходить запись в БД

    /* Окно для ввода габаритных размеров гидроцилиндра */
    /* Здесь мы будем подключаться к базе данных Shema1/table_1, что то записывать в базу данных и читать из нее */
     
    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.PreparedStatement;
    import java.sql.SQLException;
    /* Этот класс будет унаследовать все от класса Configs, поэтому добавляем к public class dataBaseHandler "extends Configs" 
    Весь нижеприведенный код служит для подключения к базе данных */
    public class dataBaseHandler extends Configs {
      Connection dbConnection;
     
      public Connection getdbConnection() throws ClassNotFoundException, SQLException {
        String connectionString = "jdbc:mysql://" + dbHost + ":" + dbPort + "/" + dbName; 
     
        Class.forName("com.mysql.cj.jdbc.Driver");
     
        dbConnection = DriverManager.getConnection(connectionString, dbUser, dbPass);
     
        return dbConnection;  
      }
      /* Здесь мы будем создавать методы, для того что бы что то записывать в базу данных или читать из нее */
     
      public void signUpDefectovka1(String NZ) {
        String insert = "INSERT INTO " + Const.GTS_TABLE + "(" +  Const.GTS_NZ + ")" + "VALUES(?)";
        try{
          PreparedStatement prSt = getdbConnection().prepareStatement(insert);
     
          prSt.setString(1, NZ);
          prSt.executeUpdate();
        } catch (SQLException e) {
          e.printStackTrace();
        } catch (ClassNotFoundException e) {
          e.printStackTrace();
        }
      }
     
      public void signUpDefectovka(String D1, String D2, String L1, String L, String d, String dp) {
    String insert = "INSERT INTO " + Const.GTS_TABLE + "(" +  Const.GTS_D1 + "," + Const.GTS_D2 + "," + Const.GTS_L1 +
    "," + Const.GTS_L + "," + Const.GTS_d + "," + Const.GTS_dp + ")" + "VALUES(?,?,?,?,?,?)"; /* данный код это некий sql запрос
    который записывает данные в какую то таблицу в какие то поля */
    try{
    PreparedStatement prSt = getdbConnection().prepareStatement(insert);
     
      prSt.setString(1, D1);
      prSt.setString(2, D2);
      prSt.setString(3, L1); 
      prSt.setString(4, L);
      prSt.setString(5, d);
      prSt.setString(6, dp);
      prSt.executeUpdate();
    } catch (SQLException e) {
      e.printStackTrace();
    } catch (ClassNotFoundException e) {
      e.printStackTrace();
    }
    }
    }

    Вот так моя таблица в БД выглядит сейчас

    Last edited by Norm; October 4th, 2022 at 02:22 PM. Reason: Change title to English

  2. #2
    Super Moderator Norm's Avatar
    Join Date
    May 2010
    Location
    Eastern Florida
    Posts
    24,911
    Thanks
    58
    Thanked 2,693 Times in 2,643 Posts

    Default Re: Получение переменной из другого класса \\

    Please post your questions in English.
    If you don't understand my answer, don't ignore it, ask a question.

  3. #3
    Junior Member
    Join Date
    Oct 2022
    Posts
    2
    Thanks
    0
    Thanked 0 Times in 0 Posts

    Default Re: Получение переменной из другого класса \\

    Good afternoon, I'm new, I've been trying to solve this problem for several days, more specifically:

    There are more than 10 scenes in my application, all the data that I enter into each entry in the database is what I implemented, but there are 2 scenes, the data from which must be stored in one row in the database. , now they take away two structure structures, since I can not get a variable from nomerDefect.java, defect1Controller.java, I tried to check the data, but then my nomer_field takes null and the program does not work, setting it to the initial value "0", after which the value changed, it still does not work, it also calls the variable through nomerDefect nomer = new nomerDefect(String NZ); everything is written through the constructor, but to no avail.
    I'd be happy if someone could help me figure this out.

  4. #4
    Super Moderator Norm's Avatar
    Join Date
    May 2010
    Location
    Eastern Florida
    Posts
    24,911
    Thanks
    58
    Thanked 2,693 Times in 2,643 Posts

    Default Re: Getting a variable from another class \\

    What is the name of the variable?
    In what class is the variable declared?
    In what method in what class does the code try to access that variable?
    If you don't understand my answer, don't ignore it, ask a question.