Как исправить: «Индекс параметра вне диапазона (2> количество параметров, которое равно 1).» - PullRequest
1 голос
/ 23 сентября 2019

Если я пытаюсь получить timeStamps (объект Date) из моей базы данных mySql через Java (jdbc), я получаю сообщение об ошибке: «Индекс параметра вне диапазона (2> количество параметров, равное 1).»

Я не могу найти решение в интернете, которое работает для меня, потому что (я думаю) sql-запрос правильный, и я поставил точное число '?'необходимо.

PreparedStatement st = conn.prepareStatement("SELECT * FROM timestamp WHERE stampTime BETWEEN '?/0/? 00:00:00.00' AND '?/31/? 23:59:59.999' AND userid = ? ");
            st.setInt(1, month);
            st.setInt(2, year); //It crashes here
            st.setInt(3, month);
            st.setInt(4, year);
            st.setInt(5, uId);
            ResultSet rs = st.executeQuery();

Я ожидаю, что инструкция будет подготовлена ​​и выполнена, но я получаю сообщение об ошибке "Индекс параметра вне диапазона (2> число параметров, равное 1)."

1 Ответ

2 голосов
/ 23 сентября 2019

Вопросительные знаки ? не интерпретируются как указатели параметров, когда они являются частью строкового литерала.Вот почему вопросительные знаки внутри '?/0/? 00:00:00.00' и '?/31/? 23:59:59.999' не считаются параметрами подготовленного утверждения;учитывается только ? внутри userid = ?, потому что он единственный "в открытом состоянии".

Вы можете решить эту проблему, создав даты окончания диапазона в вашей Java-программе и связавих к параметрам внутри stampTime BETWEEN ? AND ? условия.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...