SQLException: JZ0S4: Невозможно выполнить пустой (нулевой длины) запрос. на подготовленном заявлении - PullRequest
1 голос
/ 17 июля 2009

Вот класс, выполняющий PreparedStatements для Соединения.

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();
        ...
    }
}

я звоню

doSomethingInstance.setPS(conn);
doSomethingInstance.runSomething(var);

из другого класса, и это создает исключение в

 ResultSet rs = ps.executeQuery();

Исключением является SQLException: JZ0S4: Невозможно выполнить пустой (нулевой длины) запрос. на подготовленном заявлении. Я не могу понять почему. Кто-нибудь видит, что я здесь делаю неправильно?

Спасибо!

Ответы [ 4 ]

1 голос
/ 17 июля 2009

Эта проблема была исправлена ​​людьми. Возникла проблема с разрешениями базы данных. Перехват и печать трассировки стека на

 ResultSet rs = ps.executeQuery();

указывает, что таблица, к которой обращается запрос, не найдена. Я все еще должен выяснить, почему SQLException: JZ0S4: не может выполнить пустой (нулевой длины) запрос.

Спасибо за ваше время и внимание. Rohan

1 голос
/ 17 июля 2009

Вернитесь назад и скопируйте код прямо из исходного файла, затем отредактируйте свой вопрос. У вас есть потенциальная неоднозначность: ваш первый фрагмент вызывает подготовленный оператор «prepareStatement», затем вы переходите к «prepareStatement» (без «d»). Тщательный взгляд на исходный код облегчит изоляцию проблемы. У вас есть две переменные или вы неправильно набрали свой пример?

[позже ...] Спасибо за обновление вашего кода. Я не вижу очевидной проблемы с этим. Вы прошли через него с помощью отладчика (например, в Eclipse), чтобы убедиться, что оба метода вызываются, как и ожидалось?

0 голосов
/ 17 июля 2009

Является ли var ненулевым? var правильного типа (int вместо String, я бы подумал?)

0 голосов
/ 17 июля 2009

можете ли вы распечатать содержимое sql перед выполнением запроса? Я подозреваю, что он теряет свое содержимое

...