ConnectionはPreparedStatementsをConnectionで実行しているクラスを強調します。SQLException:JZ0S4:空の(長さゼロの)照会を実行できません。準備されたステートメントで
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();
...
}
}
例外のSQLExceptionで、私は別のクラスから
doSomethingInstance.setPS(conn);
doSomethingInstance.runSomething(var);
を呼び出し、これは
ResultSet rs = ps.executeQuery();
で投げると例外:JZ0S4:空(長さがゼロ)クエリを実行することはできません。準備された声明に。私は理由を理解できない。誰かがここで間違って何をしているのか分かりますか?
ありがとうございます!
非常に奇妙なことに、ステートメントが本当に空の場合は、最初にsetString()を使うべきではありません。あなたはそれが正しい/完全なコードであると確信していますか? ( "public setPS(..."はコンパイルすべきではありません:戻り値のタイプがありません)どのデータベースを使用しているのか分かりませんが、 "table"はテーブルの名前ではありません。 ) –