在一个方法中执行多个方法

问题描述 投票:0回答:2

你好我需要一个按钮进行检查,调用另一个方法进行步骤检查,如果其中一个方法有错误显示它。我做了它但是它返回了我最后一个被调用方法的消息,如果我有错误它没有' t返回错误,因为他返回最后一个方法的消息

按钮代码:

   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;
}

目前它是有效的,如果我每个chech有一个按钮,但我需要将它们组合在一个按钮..

java swing
2个回答
0
投票

您可以使两个方法返回整数,并以这种方式重构您的代码。

    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);
    }
}  

0
投票

相反,你也可以像这样写:

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是否成功。

© www.soinside.com 2019 - 2024. All rights reserved.