Hier ist eine Klasse, die PreparedStatements für eine Verbindung ausführt.SQLException: JZ0S4: Kann keine leere (Null-Länge) Abfrage ausführen. für eine vorbereitete Anweisung
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();
...
}
}
Ich nenne
doSomethingInstance.setPS(conn);
doSomethingInstance.runSomething(var);
von einer anderen Klasse, und dies wirft und Ausnahme an der
ResultSet rs = ps.executeQuery();
Die Ausnahme ist SQLException: JZ0S4: Kann nicht eine leere (Länge Null) Abfrage ausführen . auf einer vorbereiteten Aussage. Ich verstehe nicht warum. Sieht jemand was ich hier falsch mache?
Danke!
sehr seltsam ... wenn die Anweisung wirklich leer war, sollte setString() nicht zuerst funktionieren. Sind Sie sicher, dass das der richtige/vollständige Code ist? ("public setPS (..." sollte nicht kompilieren: fehlender Rückgabetyp.) Ich weiß nicht, welche Datenbank Sie verwenden, aber "Tabelle" ist kein sehr guter Name für eine Tabelle, es ist ein reserviertes Schlüsselwort (zumindest MySQL)) –