Hérite d'une classe exécutant PreparedStatements sur une connexion.SQLException: JZ0S4: impossible d'exécuter une requête vide (de longueur nulle). sur une instruction préparée
public class doSomething {
private PreparedStatement ps;
public setPS (Connection conn) throws SQLException {
String sql = "select * from table where id = ?";
ps = conn.prepareStatement(sql);
}
public void runSomething(String var){
ps.setString(1,var);
ResultSet rs = ps.executeQuery();
...
}
}
J'appelle
doSomethingInstance.setPS(conn);
doSomethingInstance.runSomething(var);
d'une autre classe et ce lancers francs et exception au
ResultSet rs = ps.executeQuery();
L'exception est SQLException: JZ0S4: Impossible d'exécuter une requête vide (longueur nulle) . sur une déclaration préparée. Je ne comprends pas pourquoi. Est-ce que quelqu'un voit ce que je fais mal ici?
Merci!
très étrange ... si l'instruction était vraiment vide, setString() ne devrait pas fonctionner en premier. Êtes-vous sûr que c'est le code correct/complet? ("public setPS (..." ne doit pas compiler: type de retour manquant) .Ne sais pas quelle base de données vous utilisez, mais "table" n'est pas un très bon nom pour une table, c'est un mot-clé réservé (MySQL au moins –