использовать один sql объект подключения во всей программе в java - PullRequest
0 голосов
/ 17 июня 2020

Я хочу войти в систему, используя имя пользователя и пароль SQL, поскольку разрешить базу данных легко. Подключение выполнено успешно, но я хочу использовать один и тот же URL-адрес и учетные данные во всей программе, но не знаю, как их использовать. У меня есть код ниже в двух разных классах

Это моя страница входа в систему, которая работает нормально

public class login {
    static String connectionUrl;
    @FXML
    private TextField loginusername_txt;
    @FXML
    private TextField loginpassword_txt;
    public final String url() throws SQLException {
        return connectionUrl = "jdbc:sqlserver://WIN\\SQLEXPRESS:1433;database=itinventory;" + "user=" + loginusername_txt.getText() + ";" + "password=" + loginpassword_txt.getText() + ";";

    }
    public final Connection conn() throws SQLException {
        Connection connect = DriverManager.getConnection(url());
        return connect;
    }
    public void connection(ActionEvent Event) throws Exception {


        try (Connection connect = DriverManager.getConnection(url());) {
            // Code here.
            Stage main = new Stage();
            Parent root = FXMLLoader.load(getClass().getResource("/application/main.fxml"));

            Scene scene = new Scene(root, 500, 500);
            scene.getStylesheets().add(getClass().getResource("application.css").toExternalForm());
            main.setScene(scene);
            main.show();

            loginusername_txt.clear();
            loginpassword_txt.clear();

        }
        // Handle any errors that may have occurred.
        catch (SQLException e) {
            e.printStackTrace();
        }

    }
}

//another class coding is
//full code for controller class is                                                                                                        public class controller {
login log = new login();
Stage main = new Stage();                                                                                                                 @FXML
private MenuItem mainip_menuitem;
public void laptop(ActionEvent Event) throws Exception
{
    AnchorPane root = FXMLLoader.load(getClass().getResource("/application/laptop.fxml"));
    samewindow(root);
}
@FXML
AnchorPane main_pain;
public void samewindow(AnchorPane samepane)
{
    main_pain.getChildren().setAll(samepane);
}
@FXML
private ComboBox laptopos_combo;
public void filloscombo() throws SQLException
{
    String query="Select * from operatingsystem";
    PreparedStatement pst = log.conn().prepareStatement(query);
            //.prepareStatement(query);
    ResultSet os = pst.executeQuery();
    while(os.next())
    {
        System.out.println(os);
    }
}

При запуске второго кода отображается эта ошибка:

Exception in thread "JavaFX Application Thread" java.lang.RuntimeException: 
    java.lang.reflect.InvocationTargetException
Caused by: java.lang.reflect.InvocationTargetException


Caused by: java.lang.NullPointerException
    at application.login.url(login.java:24)
    at application.login.conn(login.java:29)
    at application.controller.filloscombo(controller.java:61)

1 Ответ

0 голосов
/ 17 июня 2020

Поле loginusername_txt и loginpassword_txt не инициализировано и к нему обращается конструктор. Вам нужно инициализировать его, а не просто объявить.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...