Я пытаюсь запросить базу данных Firebird из приложения Java. Этот запрос содержит 2 целых переменных и 1 строку. Запрос выглядит следующим образом:Как добавить строковую переменную в SQL-запрос на подключение jdbc firebird
Statement statement = conn.createStatement();
ResultSet rs = statement.executeQuery("select * from table where
column1 < " + intvariable1 + " and (
column2 > " + intvariable2 +" or column2 = 0) and
column3 = '" + stringvariable + "' ";
Rs.next();
syso(rs.getInt(1));
Оказывается, что ResultSet
пуст, но когда я использую жёстко прописанное значение строки вместо переменного я получаю ожидаемый результат.
Я также пробовал это с preparedstatements
с тем же результатом - он работает только без строковой переменной.
Любые идеи, что я делаю неправильно?
EDIT: проблема решена! Stringvariable появился из поля BLOB и имел в нем несколько пустых значений. Вызов функции trim удалил их.
кажется, вопрос с данными прошедших через переменные – developer
у вас есть водительство и конечные пробелы в вашем запросе, вокруг значения строки. Пожалуйста, научитесь использовать подготовленные заявления. –
Пожалуйста, покажите используемые значения и данные в таблице, которую вы ожидаете вернуть. И, пожалуйста, используйте подготовленный оператор (и используйте его правильно!), Не объединяйте значения в строку запроса. –