2010-08-05 6 views
0

J'essaie de récupérer les résultats d'une base de données dans un jeu de résultats. Cependant, je veux exécuter une requête de mise à jour pour chaque entrée dans le jeu de résultats, mais je reçois une exception. ceci est mon codeResultset closed exception

try { 
     Statement statement = sqlconnection.conn.createStatement(); 
     query = "select * from reminders where year<= "+ syear +" and month<=" + smonth +" and date<"+ sday +" and reminded like 'false';"; 
     rs= statement.executeQuery(query); 
     while (rs.next()){ 
      id=rs.getInt("sno"); 
      String reminder = rs.getString("remind"); 
      JOptionPane.showMessageDialog(null, reminder); 
      statement.executeUpdate("update reminders set reminded='true' where sno="+id+";"); 
     } 

any1 peut me montrer une meilleure façon de le faire ?? Je suis assez nouveau à la programmation. Par conséquent me montrant comment cela sera vraiment utile. merci

+0

sur quelle ligne rencontrez-vous l'erreur? – KeatsPeeks

+1

Pas une réponse à votre question ... Mais si c'est un code de production je vois un très gros problème d'injection SQL dans votre code ... Ne construisez pas de squeries SQL en utilisant la concaténation de chaînes ... Utilisez Requêtes paramétrées insted. –

+0

@The King: bien que généralement vrai, je suppose que toutes les variables sont numériques ici. @Samuel_xL: deuxième appel à re.next(), je parierais – Nicolas78

Répondre

2

Vous êtes toujours en boucle sur les résultats de statement lorsque vous essayez d'effectuer une mise à jour avec elle. J'essaierais d'utiliser un deuxième objet Statement pour vos mises à jour.

0

Votre ResultSet ne peut pas être mis à jour.

Statement statement = sqlconnection.conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_UPDATABLE);