Задать вопрос
drno-reg
@drno-reg
см не кратко

Почему возникает ошибка ORA-01008: не все переменные привязаны?

Здравствуйте.

пытаюсь отправить параметризованный select

String sql=
"select *\n"+
"FROM EVENTS a \n"+
" where \n"
"   a.TIME_RECEIVED BETWEEN ? AND ?\n"
" and a.original_data like ?\n"
" order by a.time_created"

        try (Connection conn = DriverManager.getConnection(DB_URL_Connection, DB_UserName, DB_Password)) {
            PreparedStatement prepStmt = conn.prepareStatement(sql);
            prepStmt.setDate(1, new java.sql.Date(fDATETIME.getTime()));
            prepStmt.setDate(2, new java.sql.Date(tDATETIME.getTime()));
            prepStmt.setString(3, "%Хост: %");
            ResultSet result = prepStmt.executeQuery(sql);


Почему возникает ошибка в этом случае
Exception in thread "main" java.lang.RuntimeException: ORA-01008: не все переменные привязаны
и как ее решить?
  • Вопрос задан
  • 2909 просмотров
Подписаться 1 Оценить Комментировать
Решения вопроса 1
drno-reg
@drno-reg Автор вопроса
см не кратко
решение выглядит так
сменил тип данных на TimeStamp и sql был лишним в ResultSet result = prepStmt.executeQuery(sql);

Calendar fDATETIME = Calendar.getInstance(); // creates calendar
        Calendar tDATETIME = Calendar.getInstance();
        SimpleDateFormat ShortDateFormat = new SimpleDateFormat("dd.MM.yyyy HH:mm:ss");
        SimpleDateFormat DateFormatForSQLOracle = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

        fDATETIME.setTime(ShortDateFormat.parse(DATETIME_FROM));
        tDATETIME.setTime(ShortDateFormat.parse(DATETIME_TO));

        try (Connection conn = DriverManager.getConnection(DB_URL_Connection, DB_UserName, DB_Password)) {
            PreparedStatement prepStmt = conn.prepareStatement(sql);
            prepStmt.setTimestamp(1, java.sql.Timestamp.valueOf(DateFormatForSQLOracle.format(fDATETIME.getTime())));
            prepStmt.setTimestamp(2, java.sql.Timestamp.valueOf(DateFormatForSQLOracle.format(tDATETIME.getTime())));
            prepStmt.setString(3, "%Хост: %");

            ResultSet result = prepStmt.executeQuery();
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
18 дек. 2024, в 12:39
1000 руб./за проект
18 дек. 2024, в 12:37
10000 руб./за проект
18 дек. 2024, в 12:22
5000 руб./за проект