你好我需要一个按钮进行检查,调用另一个方法进行步骤检查,如果其中一个方法有错误显示它。我做了它但是它返回了我最后一个被调用方法的消息,如果我有错误它没有' 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有一个按钮,但我需要将它们组合在一个按钮..
您可以使两个方法返回整数,并以这种方式重构您的代码。
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);
}
}
相反,你也可以像这样写:
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是否成功。