Pourquoi est-While (rs.next()) déclaration se terminant après le 1er itération?

Je suis l'aide d'une instruction SELECT pour obtenir des données d'une table, puis l'insérer dans une autre table. Cependant, la ligne "stmt.executeQuery(query);" est l'insertion de la première ligne de la table puis se ferme. Quand je commente cette ligne, le tout en boucle parcourt toutes les lignes de l'impression de l'en sortir. La stacktrace n'est pas visible des erreurs. Pourquoi est-ce arrivé?

try{                
    String query = "SELECT * FROM "+schema_name+"."+table;

    rs = stmt.executeQuery(query);

    while (rs.next()) {

        String bundle = rs.getString("BUNDLE");
        String project_cd = rs.getString("PROJECT_CD");
        String dropper = rs.getString("DROPPER");
        String week = rs.getString("WEEK");
        String drop_dt = rs.getString("DROP_DT").replace(" 00:00:00.0","");

        query = "INSERT INTO INDUCTION_INFO (BUNDLE, PROJECT_CD, DROPPER, WEEK, DROP_DT) "
              + "VALUES ("
              + bundle+","
              + "'"+project_cd+"',"
              + dropper+","
              + week+","
              + "to_date('"+drop_dt+"','YYYY-MM-DD'))";

        System.out.println(query);

        stmt.executeQuery(query);
    }
}catch(Exception e){
    e.printStackTrace();
}
  • Hm ... en fait je ne sais pas si l'appel de executeUpdate() sur une déclaration ferme que les déclarations précédentes ResultSet. Et je suis trop paresseux pour le test de ce droit maintenant ...
  • La question précise est déjà répondu, mais comme un constat: vous devriez être en utilisant une instruction préparée et la modification de la lie des variables à chaque fois au lieu de construire une nouvelle plaquette avec les valeurs codées en dur dans. (Il semble comme un endroit improbable pour obtenir une injection SQL, mais dépend qui peuvent ajouter des entrées dans la table source...). Mais pourquoi ne pas simplement le faire en un seul coup avec un select-que-insérer, au lieu de boucle?
InformationsquelleAutor Mike | 2011-08-08