Использование объекта java.sql.Timestamp в запросе sql - PullRequest
1 голос
/ 10 марта 2011

Я пытаюсь выполнить запрос в java, который использует объект java.sql.Timestamp в качестве даты для сравнения в предложении where.

Вот как строка запроса, встроенная в Java

 String getTransactionsSQL =  "Select transaction_seq " +
    "From transactions ct " +
    "Where id = 'ABCD'" + 
    "And ct.out_msg_timestamp" +
    "<= to_date('" + parseDate.getTimeStamp() +"','YYYY-MM-DD HH:MI:SS..')" +
    "order by transaction_seq"; 

Оператор parseDate.getTimeStamp() возвращает объект java.sql.TimeStamp, который содержит дату.Вот пример вывода System.out.println(parseDate.getTimeStamp());

2011-03-07 05:47:57.0

Когда я запускаю вышеупомянутый запрос, я получаю эту ошибку

 java.sql.SQLException: ORA-01843: not a valid month

Есть какие-нибудь подсказки?

1 Ответ

7 голосов
/ 10 марта 2011

Использовать PreparedStatement: http://download.oracle.com/javase/6/docs/api/java/sql/PreparedStatement.html

Никогда не используйте конкатенацию строк для передачи аргументов командам SQL (угроза безопасности: внедрение SQL)!

...