Добрый день, я новичок, пытаюсь решить эту проблему уже несколько дней, конкретнее:
В моем приложении более 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(); } } }
Вот так моя таблица в БД выглядит сейчас