exception: before start of result set

exception: before start of result set - Java - Programmation

Marsh Posté le 21-03-2013 à 17:16:42    

bonjour tout le monde,  
 
j'essaie depuis des heures d'exécuter ce code mais j'ai sans arret une exception "before start of reslut set"
voici le code  
 
public class DBUpdate {
     
    static File fichier;
    static String separateur;
    static String SQLTable;
    static String colonne;
    static String chaine_fichier ="";
    static String chaine_table="";
     
 public DBUpdate (File fichier, String separateur, String SQLTable, String colonne){
             
            this.fichier=fichier;
            this.separateur=separateur;
            this.SQLTable=SQLTable;
            this.colonne=colonne;
   
 String url = "jdbc:mysql://localhost:3306/base";
        String password= "base";
        String username= "root";
 
     try{  
           //connexion à la base de données
          Class.forName("com.mysql.jdbc.Driver" ).newInstance();
          Connection connexion = DriverManager.getConnection(url, username, password);
          Statement instruction = connexion.createStatement();
          ResultSet r = instruction.executeQuery("select * from "+this.SQLTable+"" );  
           
   
         try{         InputStream ips=new FileInputStream(fichier);  
   InputStreamReader ipsr=new InputStreamReader(ips);
   BufferedReader br=new BufferedReader(ipsr);
          String ligne;
         
                 while (((ligne=br.readLine())!=null) || r.next()){
                                String str[] =ligne.split(this.separateur);
                                chaine_fichier=str[1];
                                chaine_table=r.getString(this.colonne);
                                instruction.executeUpdate("update "+SQLTable+" set "+colonne+"='"+chaine_fichier+"' where    "+colonne+"='"+r.getString(colonne)+"'" );
   }
             
   br.close();  
                        connexion.close();
  }  
  catch (Exception e){
   System.out.println("ici" +e.toString());
                   
           
          }
         
      }
     catch (Exception ie)  {
          System.out.println(ie);}
         
 
       
 }
         
     
        public static void main(String[] args) {
        DBUpdate r=new DBUpdate(new File ("/root/Desktop/peerIP" ),"= ","test","adresse" );
         
         
    }
}
 
j'ai essayé d'englober la boucle while par ce test (if r.next()) mais ca me retourne une exception operation not allowed after result set closed)
aidez moi à trouver l'erreur  

Reply

Marsh Posté le 21-03-2013 à 17:16:42   

Reply

Marsh Posté le 23-03-2013 à 11:08:14    

Bonjour,
 
- Utilise la balise [code] pour rendre la lecture plus aisée
- Message d'erreur complet - sur quelle ligne cela se produit?


---------------
http://devicenotready.com/ - Informatique et autres bizarreries
Reply

Marsh Posté le 23-03-2013 à 11:11:19    

Double topic pour la même question?
 
http://forum.hardware.fr/hfr/Progr [...] 9170_1.htm


---------------
http://devicenotready.com/ - Informatique et autres bizarreries
Reply

Marsh Posté le 25-03-2013 à 23:49:01    

@devicenotready: non, l'erreur est différente.
@bloomingdals: ton erreur est dans ta condition de boucle:

Code :
  1. while (((ligne=br.readLine())!=null) || r.next())


Dans un "or parresseux" (||), si le 1er membre de la condition est vrai, le 2ème n'est pas exécuté.
C'est ici le cas, donc r.next() n'est pas exécuté, donc ton ResultSet restera à sa position initiale, tant que ton fichier contiendra des lignes.
Sur ta seconde erreur, je ne sais pas.
Je te conseille de faire les choses les 1 aprés les autres plutôt que tout en même temps, cela sera plus clair:
1) lire le contenu de ton fichier dans un tableau
2) lire ta table et ranger les valeurs du champ "adresse" dans un autre tableau
3) en dernier lieu, faire tes requêtes de mise à jour en parcourant tes tableaux


Message édité par tusc le 25-03-2013 à 23:49:34
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed