Выполнить несколько методов в одном методе - PullRequest
0 голосов
/ 13 февраля 2019

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

Код кнопки:

   private void jButton9ActionPerformed(java.awt.event.ActionEvent evt) {                                         
    connect1();
    try {
        Check1();
        Check2();
    } catch (SQLException ex) {
        Logger.getLogger(Main.class.getName()).log(Level.SEVERE, null, ex);
    }
}  

И код метода Chech1 и метода Check2:

    private Integer Check1() throws SQLException {
    Integer records = 0;
    PreparedStatement pstmt = null;
    ResultSet rs = null;
    connect1();
    String query = "select count(*) from MSISDNs_for_Import (nolock)\n"
            + " where len(msisdn) <> 12 or len(sim) <> 12  or msisdn not like '35988%'";
    pstmt = conn1.prepareStatement(query);
    rs = pstmt.executeQuery();
    if (rs.next()) {
        records = rs.getInt(1);
        System.out.println("COUNT= " + records);
        selectedFilesField.setText("Check 1 successfull");
        rs.close();
        if (records > 1) {
            selectedFilesField.setText("Error in check 1");
        }
    }

    return records;
}

private Integer Check2() throws SQLException {
    Integer records = 0;
    PreparedStatement pstmt = null;
    ResultSet rs = null;
    connect1();
    String query = "select count(*) from SIMs_for_Import  (nolock)\n"
            + " where substring(imsi, 8, 1) <> '6'";
    pstmt = conn1.prepareStatement(query);
    rs = pstmt.executeQuery();
    if (rs.next()) {
        records = rs.getInt(1);
        System.out.println("COUNT= " + records);
        selectedFilesField.setText("Check 2 successfull");
        rs.close();
        if (records > 1) {
            selectedFilesField.setText("Error in check 2");
        }
    }
    return records;
}

На данный момент это работает, если у меня есть одна кнопка для каждого чека, но мне нужно объединить их в одну кнопку ..

Ответы [ 2 ]

0 голосов
/ 13 февраля 2019

Вместо этого вы также можете написать это так:

private void jButton9ActionPerformed(java.awt.event.ActionEvent evt) {                                         
    connect1();
    try {
        int i = Check1();
if(i < 0){
selectedFilesField.setText("Error in check 1");
}else{

        Check2();
}
    } catch (SQLException ex) {
        Logger.getLogger(Main.class.getName()).log(Level.SEVERE, null, ex);
    }
}   

Таким образом, вы можете напрямую установить сообщение об ошибке из проверки 1, если проверка 1 не пройдена, и проверки 2, если проверка 2 не удалась и проверка 1 прошла успешно.

0 голосов
/ 13 февраля 2019

Вместо этого вы можете сделать так, чтобы оба метода возвращали целое число, и таким образом реструктурировать код.

    private Integer Check1() throws SQLException {
    Integer records = 0;
    PreparedStatement pstmt = null;
    ResultSet rs = null;
    connect1();
    String query = "select count(*) from MSISDNs_for_Import (nolock)\n"
            + " where len(msisdn) <> 12 or len(sim) <> 12  or msisdn not like '35988%'";
    pstmt = conn1.prepareStatement(query);
    rs = pstmt.executeQuery();
    if (rs.next()) {
        records = rs.getInt(1);
        System.out.println("COUNT= " + records);
        selectedFilesField.setText("Check 1 successfull");
        rs.close();
    }

    return records;
}

private Integer Check2() throws SQLException {
    Integer records = 0;
    PreparedStatement pstmt = null;
    ResultSet rs = null;
    connect1();
    String query = "select count(*) from SIMs_for_Import  (nolock)\n"
            + " where substring(imsi, 8, 1) <> '6'";
    pstmt = conn1.prepareStatement(query);
    rs = pstmt.executeQuery();
    if (rs.next()) {
        records = rs.getInt(1);
        System.out.println("COUNT= " + records);
        selectedFilesField.setText("Check 2 successfull");
        rs.close();
    }
    return records;
}

тогда ваш фактический код будет таким, как

private void jButton9ActionPerformed(java.awt.event.ActionEvent evt) {                                         
    connect1();
    try {
        if( Check1() > 0 ) {
           if( Check2() > 0 ) {
              //Do Something
           } else {
              selectedFilesField.setText("Error in check 2");
           }
        } else {
           selectedFilesField.setText("Error in check 1");
        }
    } catch (SQLException ex) {
        Logger.getLogger(Main.class.getName()).log(Level.SEVERE, null, ex);
    }
}  
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...