在java中给出错误的返回类型时出错
我在在java中给出错误的返回类型时出错,java,mysql,jdbc,arraylist,Java,Mysql,Jdbc,Arraylist,我在MySql中读取数据库,并将值存储在ArrayList中并返回它 public ArrayList getData(String rule) { try { String q = "select distinct email_id from logs where rule ='" + rule + "';"; System.out.println(q); rs = st.executeQuery(q); ArrayLis
MySql
中读取数据库,并将值存储在ArrayList
中并返回它
public ArrayList getData(String rule) {
try {
String q = "select distinct email_id from logs where rule ='" + rule + "';";
System.out.println(q);
rs = st.executeQuery(q);
ArrayList emails = new ArrayList();
while (rs.next()) {
emails.add(rs.getString("email_id"));
}
return emails;
} catch (Exception e) {
System.out.println("" + e);
}
}
这段代码有什么问题。。它给出一个错误“它必须返回类型为
ArrayList
”的结果”。。但我只返回类型为ArrayList
的“电子邮件”。。请帮助我找出此错误。不要在try作用域中创建数组,而是在try之前在方法作用域中创建数组,然后在程序结束时返回数组,这样您就可以使用类似以下内容:
public ArrayList getData(String rule) {
ArrayList emails = new ArrayList();//<<----create the list here
try {
String q = "select distinct email_id from logs where rule ='" + rule + "';";
System.out.println(q);
rs = st.executeQuery(q);
//ArrayList emails = new ArrayList();<<--------don't create the list here
while (rs.next()) {
emails.add(rs.getString("email_id"));
}
//return emails;//<<-------don't return the result here
} catch (Exception e) {
System.out.println("" + e);
}
return emails;//<<-------return the list here
}
提示:如果发生异常会发生什么情况?在这种情况下,程序应该做什么?在那种情况下不是还回来了吗。检查所有可能的代码执行流程。请注意:,不要使用rawtypes..您在try块中返回它们,当发生异常时,您不会返回任何内容。根据方法的目标,可以在catch块中返回null,也可以在方法末尾返回null。
public ArrayList getData(String rule) throws SQLException {
ArrayList emails = new ArrayList();//
try (PreparedStatement pstm = connection.prepareStatement(
"select distinct email_id from logs where rule = ?")) {
//NOTE: Position indexes start at 1, not 0
pstm.setString(1, rule);
ResultSet rs = pstm.executeQuery();
while (rs.next()) {
emails.add(rs.getString("email_id"));
}
}
return emails;
}