Question

J'ai un problème avec la déclaration de retour >. < Je veux stocker tous les noms de magazines dans

ArrayList<String> ListNameMagazine = new ArrayList<String>();

j'ai un DB; dans la base de données, il y a une table name_magazine et les données dans <=> sont

  

Magazine1

     

Magazine2

     

Magazine3

     

Magazine4

Ceci est mon principal:

    ShowData Show = new ShowData();

    int HowManyMagazine = Show.HowManyMagazine(1); // to make sure there is how many Magazine name in my database

    //System.out.print(HowManyMagazine); //i want to make sure the data is out.

    String nmeMagazine = null; // this variable for get data from return statement 

    // i want to store in ListNameMagazine
    ArrayList<String> ListNameMagazine = new ArrayList<String>();

    for (int numbeer = 0;numbeer <= HowManyMagazine ; numbeer++)
    {
       //Store in 1 variable String, because if arrayList it's error
        nmeMagazine = Show.getResult("Select Name_Magazine from Magazine");
        // Store again in array list
        ListNameMagazine.add(nmeMagazine);
    }

    for (String s : ListNameMagazine)
    {
        System.out.println(s); // show the data
    }

Voici ma déclaration de retour:

public String getResult(String sql)
throws SQLException
{
    ResultSet rs = st.executeQuery(sql);
    ResultSetMetaData resultsetmetadata = rs.getMetaData();

    //String just_try = null;
    while (rs.next()) { 
         System.out.println("Result:"+rs.getString(1));
         //just_try = rs.getString(1);
         //return just_try;
    }
    return null;    //return just_try;
}

Le problème est dans l'instruction de retour.

Quand le commentaire (//) j'efface et le dernier retourne null; J'efface. Cela devient comme ici:

public String getResult(String sql)
throws SQLException
{         
     ResultSet rs = st.executeQuery(sql);
     ResultSetMetaData resultsetmetadata = rs.getMetaData();
     String just_try = null;

     while (rs.next()) { 
         //System.out.println("Result:"+rs.getString(1));
        just_try = rs.getString(1);
        return just_try;
     }

     return just_try;
 }

Quand je montre les données en utilisant cette déclaration.

for (String s : ListNameMagazine)
    {
        System.out.println(s); // show the data
    }

le résultat uniquement

  

Magazine4

     

Magazine4

     

Magazine4

     

Magazine4

@. @ J'ai confondu où le manque @. @

mais quand je montre les données dans l'instruction de retour comme ceci

public String getResult(String sql)
throws SQLException
    {         
    ResultSet rs = st.executeQuery(sql);
    ResultSetMetaData resultsetmetadata = rs.getMetaData();
    String just_try = null;

    while (rs.next()) {     
        System.out.println("Result:"+rs.getString(1));
        //just_try = rs.getString(1);
        //return just_try;
    }

    return null;
}

Les données montrent ce que je veux. Je sais que je ne manque que quelque part mais je ne sais pas où cela @. @. J'espère que vous pourrez le trouver .THX

Était-ce utile?

La solution

Votre problème est que return ne renvoie qu'une seule chose. Il y retournera immédiatement et la fonction quittera ! Vous réaccordez le nom d'un magazine just_try .

while (rs.next()) { 

    //System.out.println("Result:"+rs.getString(1));

   just_try = rs.getString(1);

  return just_try;

}

Alors, vous commencez à itérer dans rs , et vous obtenez le nom suivant:

just_try = rs.getString(1);

Ensuite, vous indiquez le code pour renvoyer just_try.

return just_try;

À ce stade, just_try sera renvoyé et la fonction quittera! Je pense que votre problème est que vous vous attendez à ce que la fonction continue à fonctionner et à renvoyer des valeurs au code qui l'appelle, mais ce n'est pas ainsi que cela fonctionne.

Je soupçonne que vous voulez faire quelque chose comme ceci:

ArrayList<String> ListNameMagazine;
ListNameMagazine = Show.getResult("Select Name_Magazine from Magazine");

puis dans la fonction getResult:

public ArrayList<String> getResult(String sql) throws SQLException {

    ResultSet rs = st.executeQuery(sql);

    ResultSetMetaData resultsetmetadata = rs.getMetaData();

    ArrayList<String> returnArrayList = new ArrayList<String>();

    while (rs.next()) { 

        returnArrayList.add(rs.getString(1));

    }
    return returnArrayList;

}

Autres conseils

xan: votre méthode renvoie une chaîne pendant que vous essayez de renvoyer une liste.

La signature doit être remplacée par

public List<String> getResult(String sql) throws SQLException;
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top