Почему происходит задержка, когда я нажимаю кнопку JFX, которая соединяет меня с базой данных SQL Server 2012 и выполняет определенный c запрос, и только в первый раз? - PullRequest
0 голосов
/ 06 января 2020

Это небольшой java пример входа в программу, который я сделал, когда я запустил его и нажал на кнопку JFXButton Login, на изображении появляется задержка примерно на 1 секунду, зная, что программе удалось подключиться и запрос после этой задержки

это происходит с JFXButton для второй задержки

впоследствии, когда я снова нажимаю на эту кнопку, она работает быстро и плавно, пока я не остановлю запустите снова.

обратите внимание, что регистрация JFXButton, которая переносит меня в другую сцену, работает нормально, и что я новичок в этой области. Спасибо :)

    public void initialize(URL location, ResourceBundle resources) {
        progressBar.setStyle("-fx-background-color: green");
        progressBar.setVisible(false);
        wrngPassLbl.setVisible(false);
        handler = new DBHandler();
    }

    @FXML
    public void loginAction(ActionEvent e) {

        progressBar.setVisible(true);
        PauseTransition pt = new PauseTransition();
        pt.setDuration(Duration.seconds(3));
        pt.setOnFinished(ex -> {
            System.out.println("Login successful.");

        });
        pt.play();

        String q1 = "select * from [User] where userName=? and userPass=?";
        dbConnection = handler.getConnection();

        try {
            pst = dbConnection.prepareStatement(q1);
            pst.setString(1, usrTxt.getText());
            pst.setString(2, passTxt.getText());
            ResultSet result = pst.executeQuery();

            int count = 0;
            while (result.next()) {
                count++;
            }

            if (count == 1) {
                System.out.print("Connection is successfully established");

            } else if (count == 0) {
                System.out.print("wrong username or password");
            }
            pst.close();
            dbConnection.close();
        } catch (SQLException ex) {
            ex.printStackTrace();

        }
    }

и это класс DBHanler (для связи)

public class DBHandler extends Configs {

    Connection dbConnection;

    public Connection getConnection() {

        Properties prop = new Properties();
        prop.setProperty("user", dbUser);
        prop.setProperty("password", dbPass);
        prop.setProperty("useSSL", "false");
        prop.setProperty("autoReconnect", "true");

        String connectionString = "jdbc:mysql://" + dbHost + ":" + dbPort + "/" + dbName;

        try {
            Class.forName("com.mysql.jdbc.Driver");
        } catch (ClassNotFoundException ex) {
            ex.printStackTrace();
        }

        try {
            dbConnection = DriverManager.getConnection(connectionString,prop);
        } catch (SQLException ex) {
            ex.printStackTrace();
        }
        return dbConnection;
    }
}

1 Ответ

0 голосов
/ 06 января 2020

Моя проблема была исправлена ​​с помощью Параллелизма в javaFX , как предложил @Slaw

...