[JDBC]Probleme curseur SQL
Bonjour, je suis sur une appli qui attaque une BD ACCESS mais j'ai deux requêtes qui me retournent état de curseur non valide
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
|
Statement s1 = connect.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY);
String req = "Select Count(*) from chrono where noConcurrent="+numconcu+" And noEtape="+var3;
ResultSet result = s1.executeQuery(req);
result.next();
int cpt = result.getInt(1);
if (cpt==1){
mess.showMessageDialog(null,"Vous avez déjà rentré un temps pour ce concurrent","Avertissement",JOptionPane.ERROR_MESSAGE);
}
else{
PreparedStatement st = connect.prepareStatement("Insert into Chrono(noEtape, noConcurrent, temps) Values (?,?,?)");
st.setInt(1, var3);
st.setInt(2, numconcu);
st.setFloat(3, letemps);
st.executeUpdate();
st.close();
connect.close();
temps.setText("");
}
result.close();
} |
Ici, la requete doit me retourner soit 1 soit 0. Quand c'est 1, pas de problème mais pour 0 çà met l'erreur.
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
|
Statement stab = connect.createStatement();
String bdtab = "Create table Classement(nom text, temps float)";
stab.execute(bdtab);
stab.close();
Statement s1 = connect.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY);
String req1 = "Select concurrent.nom, SUM(chrono.temps) As Somme FROM concurrent, chrono Where concurrent.numero=chrono.noConcurrent Group by concurrent.nom";
ResultSet rs = s1.executeQuery(req1);
while (rs.next()){
var1= rs.getString(1);
float var2 = rs.getFloat(2);
PreparedStatement st = connect.prepareStatement("Insert into Classement(nom, temps) Values (?,?)");
st.setString(1, var1);
st.setFloat(2, var2);
st.executeUpdate();
st.close();
}
rs.close();
String unnom = new String();
float untemps;
Statement s2 = connect.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY);
String req2 = "Select nom, temps From Classement order by temps";
ResultSet rs2 = s2.executeQuery(req2);
while(rs2.next()){
unnom=rs2.getString(1);
untemps=rs2.getFloat(2);
listeclass.add(""+rs2.getRow()+" "+unnom+" avec un temps cumulé de "+untemps+"");
}
rs2.close();
connect.close(); |
J'ai la même erreur ici sur le getString et le getFloat (enfin c la qu'Eclipse pointe) sauf que bizarrement çà marche mais le code apres le rs.close ne se marche pas. Je ne sais pas si c'est à cause de cette erreur.