Я хотел бы показать ошибку пользователю, если соединение с базой данных mySQL не установлено, но мой код не работает. Если я специально меняю ip или имя хоста, чтобы создать проблему, он просто зависает и ничего не делает вместо отображения ошибки, которую я написал в диалоговом окне сообщения.

Полное раскрытие Я новичок в программировании и самообучении, поэтому должно быть миллион способов рефакторинга кода, чтобы было легче читать или просто лучше делать это / регистрировать ошибки, поэтому я открыт для предложений и комментариев.

Вот фрагмент кода, который запускается при открытии JFrame с экраном загрузки. Он проверяет версию, в которой работает пользователь, по сравнению с той, которая находится в базе данных, и заставляет указанного пользователя иметь самую последнюю версию, чтобы иметь возможность войти в систему.

try {

                    Class.forName("com.mysql.cj.jdbc.Driver").newInstance();
                    String userName = "root";
                    String password = "";
                    String url = "jdbc:mysql://localhost:3306/app";
                    conn = DriverManager.getConnection(url, userName, password);

                    // Check if the connection is established, if it is, continue, else open
                    // JMessage and close frame and connection.

                    String query = "select * from buildversion";

                    ps = (PreparedStatement) conn.prepareStatement(query);
                    ResultSet rs = ps.executeQuery();

                    if (conn != null) {
                        if (rs.next()) {

                            String dbaseBuild = rs.getString("build").toString().trim();
                            String softwareBuild = new String(lblV.getText().trim());

                            if (dbaseBuild.equals(softwareBuild)) {
                                Login login = new Login();
                                login.setVisible(true);

                                closeVersionCheckFrame();

                            } else {

                                int choice = JOptionPane.showConfirmDialog(null,
                                        "A new version is available for download, do you want to be redirected?",
                                        softwareBuild, JOptionPane.YES_NO_OPTION);
                                if (choice == 0) {

                                    Desktop.getDesktop().browse(new URI("http://mywebsite.com/Download"));
                                    closeVersionCheckFrame();
                                } else {

                                    JOptionPane.showMessageDialog(null,
                                            "You need to have the latest version of the software to be able to log in.",
                                            "Version divergence", JOptionPane.INFORMATION_MESSAGE);
                                    closeVersionCheckFrame();
                                }
                            }
                        } else {
                            JOptionPane.showMessageDialog(null,
                                    "There was a connection issue. Please try again, if the problem persits, contact admin@myappswebsite.com",
                                    "Connection Issue", JOptionPane.INFORMATION_MESSAGE);
                            closeVersionCheckFrame();
                        }

                    }

                } catch (SQLException | IOException | URISyntaxException | InstantiationException
                        | IllegalAccessException | ClassNotFoundException ex) {

                }

                finally {
                    if (conn != null || ps != null) {

                        try {
                            conn.close();
                            ps.close();
                        } catch (Exception e) {
                            Logger.getLogger(Version.class.getName()).log(Level.SEVERE, null, e);
                        }
                    }
                }

            }
        }).start();

    }

    private void closeVersionCheckFrame() {
        this.dispose();
    }

}

Оператор if (conn! = Null) / else, скорее всего, не в том месте или плохо написан, любая помощь будет принята с благодарностью.

Спасибо!

0
ADSquared