2017-05-30 4 views
-2

ich die Datenbank in MySql zu lesen und die Werte in der ArrayList Speichern und senden Sie es ..Giving Fehler, dass falsche Rückgabetyp in Java

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

was mit diesem Stück Code falsch ist .. Es gibt eine Fehler, dass "Es muss ein Ergebnis des Typs ArrayList zurückgeben .. Aber ich gebe die" E-Mails "zurück, die nur vom Typ ArrayList ist. Helfen Sie mir, diesen Fehler zu finden.

+0

Hint : Was passiert, wenn eine Ausnahme auftritt? Was sollte das Programm in diesem Fall tun? Ist es nicht Rückkehr in diesem Zustand? Überprüfen Sie alle möglichen Ausführungsabläufe Ihres Codes. –

+1

als Nebenbemerkung: [GENERICS] (https://docs.oracle.com/javase/tutorial/java/generics/types.html), verwende keine Rawtypes. – SomeJavaGuy

+0

Du gibst sie innerhalb des Try-Blocks zurück Wenn eine Ausnahme auftritt, geben Sie nichts zurück. Sie könnten null im catch-Block oder nur am Ende der Methode zurückgeben, je nachdem, was das Ziel der Methode ist. – RedSonja

Antwort

1

Anstatt Ihre Array innerhalb Ihres zu erstellen Probieren Sie den Gültigkeitsbereich aus, erstellen Sie ihn in Ihrem Methodenbereich vor dem Versuch und geben Sie ihn am Ende Ihres Programms zurück, damit Sie etwas verwenden können dies wie:

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 
} 

Ein andere Sache, jeden Syntaxfehler zu vermeiden, oder SQL-Injection Ich schlage vor, PreparedStatement stattdessen zu verwenden, ist es sicherer und hilfreich ist, zum Beispiel:

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

vielen Dank ..! –

+0

Sie sind willkommen, kein Problem @deepakasai –

Verwandte Themen