Java/Mysql

cs_mika1987 Messages postés 3 Date d'inscription mardi 22 mars 2011 Statut Membre Dernière intervention 2 avril 2011 - 31 mars 2011 à 18:06
cs_mika1987 Messages postés 3 Date d'inscription mardi 22 mars 2011 Statut Membre Dernière intervention 2 avril 2011 - 2 avril 2011 à 10:57
bonjour tout le monde
je veus faire deux requete sql le resultal de la premiere sera tester par l'element de la table de BD
je dois declarer deux result set mais sa n'a pas marche voile le code


//( SELECT distinct a.tag_id , b.frequencetagdansdoc, b.frequencetagdanscollection FROM usertagpost a, tabledestag b where a.tag_id b.tag_id and a.post_id " +i )

//il faudra mettre le 2eme champ dans la variable post.tagId[t][1]=resSet.getInt(2); et la 3eme champs dans post.tagId[t][2]=resSet.getInt(2);

import java.sql.*;
import java.util.*;
//import java.math.MathContext;
public class BD {
public static void main(String[] arg){
Connection con = null;
Statement stat = null;
ResultSet resSet = null;
ResultSet resSet1 = null;
Post post;
List listePost = new ArrayList();
List listePost1 = new ArrayList();
try
{
int i=1;

// Class.forName("com.mysql.jdbc.Driver");
Driver monDriver = new com.mysql.jdbc.Driver();
DriverManager.registerDriver(monDriver);

con = DriverManager.getConnection("jdbc:mysql://localhost:3306/reseau", "root", "");
stat = con.createStatement();
while( i < 10 ){
resSet = stat.executeQuery("SELECT usertagpost.tag_id ,tagsfreq.freq_id from usertagpost INNER JOIN tagsfreq ON usertagpost.tag_id=tagsfreq.tag_id where usertagpost.post_id = " +i);
int t = 0;
post = new Post ();
post.postId = i;
while( resSet.next() ) { post.tagId[t][0]= resSet.getInt(1);
post.tagId[t][2]= resSet.getInt(2);
resSet1 stat.executeQuery("SELECT count(*) FROM usertagpost where usertagpost.post_id " +i);
post.tagId[t][1]= resSet1.getInt(1);
t++;
}
post.tagId[t][0]= -1;
listePost.add(post);
listePost1.add(post);
i++;
}
}catch(SQLException sqle){
System.out.println(sqle.toString());
}
}

voila le message d'erreur
java.sql.SQLException: Before start of result
merci

2 réponses

HFanny Messages postés 699 Date d'inscription mercredi 19 février 2003 Statut Membre Dernière intervention 13 mai 2011 20
1 avril 2011 à 21:41
Cette erreur est retournée car l'objet statement est utilisé dans la seconde boucle.
Exécuter un "Statement" ferme n'importe quel ResultSet créé auparavant.

Dans ce cas précis, lorsque resSet1 est créé, resSet ne peut plus être réutilisé.
Ce qui provoque l'erreur lors du second passage dans while (resSet.next()).

Il faut donc créer un second objet Statement qui sera utilisé pour resSet1, ce qui est d'ailleurs écrit dans la javadoc:


public interface Statement
extends Wrapper
The object used for executing a static SQL statement and returning the results it produces.

By default, only one ResultSet object per Statement object can be open at the same time. Therefore, if the reading of one ResultSet object is interleaved with the reading of another, each must have been generated by different Statement objects. All execution methods in the Statement interface implicitly close a statment's current ResultSet object if an open one exists.

Fanny
0
cs_mika1987 Messages postés 3 Date d'inscription mardi 22 mars 2011 Statut Membre Dernière intervention 2 avril 2011
2 avril 2011 à 10:57
merci probleme reglé
0
Rejoignez-nous
A voir également