Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Why is While (rs.next()) statement ending after 1st iteration?

I am using a SELECT statement to get data from a table and then insert it into another table. However the line "stmt.executeQuery(query);" is inserting the first line from the table then exits. When I comment this line out, the while loop loops through all the lines printing them out. The stacktrace isn't showing any errors. Why is this happening?

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();
}
like image 336
Mike Avatar asked Nov 28 '22 03:11

Mike


1 Answers

You are re-using the Statement that was used to produce rs on the last line of your loop.

This will close the ResultSet rs. As stated in the documentation:

A ResultSet object is automatically closed when the Statement object that generated it is closed, re-executed, or used to retrieve the next result from a sequence of multiple results.

You need to use a second Statement object to execute the INSERT statements.

like image 182
Joachim Sauer Avatar answered Dec 05 '22 16:12

Joachim Sauer