2016-07-08 5 views
1

Im получая исключение:Получение ошибки "Операция не допускается после ResultSet закрыто"

Операция не допускается после ResultSet закрыто

Где я неправ?

код:

try{ 

    Class.forName("com.mysql.jdbc.Driver"); 

    Connection con= DriverManager.getConnection("jdbc:mysql://localhost:3306/project","root","root"); 
    Statement s=con.createStatement(); 
    ResultSet rs1=s.executeQuery("Select * from items"); 

    while(rs1.next()) { 
     q= (q+Integer.parseInt(rs1.getString("qty"))); 
     //update items Set qty=5 where name='Maggi'; 
     s.executeUpdate("update items SET qty="+q+" WHERE name='"+value+"'"); 
    } 
}           
catch(Exception ee){ 
    System.out.println(ee); 
} 
+4

Вы используете один и тот же объект 'Statement' дважды. Вам нужны два разных объекта 'Statement' для выполнения запроса и обновления. – Sanjeev

ответ

2

Как вы будете нуждаться в двух различных себе объекты для выполнения запроса и обновления части попробовать:

рассмотреть
try{ 

    Class.forName("com.mysql.jdbc.Driver"); 

     Connection con= DriverManager.getConnection("jdbc:mysql://localhost:3306/project","root","root");enter code here 
    Statement s=con.createStatement(); 
    ResultSet rs1=s.executeQuery("Select * from items"); 

    while(rs1.next()){ 
     q= (q+Integer.parseInt(rs1.getString("qty"))); 
     s=con.createStatement(); // <- create a new statement here 
     s.executeUpdate("update items SET qty="+q+" WHERE name='"+value+"'"); 
    } 
}           
catch(Exception ee){ 
    System.out.println(ee); 
} 
} 

Кроме того, используя метод PreparedStatement и используя set*, чтобы избежать потенциальная SQL-инъекция

+0

Серьезно? Просто код, никаких объяснений? – GhostCat

+0

@ Jägermeister - Извините, меня вызвали - работа и все такое. –

Смежные вопросы