exception: before start of result set - Java - Programmation
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?
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
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 :
|
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
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