2016-07-08 6 views
1

Im die Ausnahme bekommen:Erste Fehler "Operation nicht erlaubt nach ResultSet geschlossen"

Betrieb nicht erlaubt nach ResultSet

geschlossen

Wo bin ich falsch?

Code:

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

Sie verwenden das gleiche 'Statement' Objekt zweimal. Sie benötigen zwei verschiedene 'Statement'-Objekte, um die Abfrage auszuführen und zu aktualisieren – Sanjeev

Antwort

2

Wie Sie zwei verschiedene Statement Objekte benötigt, die Abfrage und Aktualisierung von Teilen auszuführen versuchen:

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

Sehen Sie sich auch eine PreparedStatement und mit set* Methode zu vermeiden Potential SQL Injection

+0

Ernsthaft? Nur Code, keine Erklärungen? – GhostCat

+0

@ Jägermeister - Entschuldigung wurde weggerufen - Arbeit zu tun und all das. –