Как ввести формат метки времени из Java в базу данных Oracle, которая также имеет формат метки времени? - PullRequest
0 голосов
/ 04 мая 2019

У меня есть эта таблица в базе данных SQL Oracle

MESSAGES
--------
Name           Null?    Type           
-------------- -------- -------------- 
ID_MESSAGE      NOT NULL NUMBER(38)     
CONTENT          NOT NULL NVARCHAR2(500) 
TIME_STAMP NOT NULL TIMESTAMP(6)  

И я пытаюсь вставить данные в эту таблицу, но у меня проблема с вставкой временной метки.

Я сгенерировал метку времени в Java и выполнил следующий запрос:

Timestamp timeStamp = new Timestamp(System.currentTimeMillis());


String query = "INSERT INTO messages(content, time_stamp) VALUES ('"+textAreaSendMessage.getText()+"', "+timeStamp+")";

st.executeQuery(query);

И я получаю эту ошибку:

Caused by: java.sql.SQLSyntaxErrorException: ORA-00917: missing comma

Как это исправить, чтобы она вставляла метку времени вбазы данных?

Ответы [ 2 ]

1 голос
/ 04 мая 2019

Используйте DEFAULT при определении таблицы для вызова функции, которая фиксирует текущий момент. Эта функция будет автоматически запускаться каждый раз, когда вы INSERT начинаете новую строку. Тогда не нужно никакой Java для этой цели.

Если вы хотите сделать что-то подобное в Java, не используйте java.time.Timestamp. Этот класс был вытеснен несколько лет назад классами java.time .

OffsetDateTime odt = OffsetDateTime.now( ZoneOffset.UTC ) ;

Создайте строку SQL, используя ? заполнители. Не спорьте со строковыми манипуляциями, как показано в вашем примере кода.

Передайте объект OffsetDateTime для заполнения для заполнителя ?, используя объект PreparedStatement.

myPreparedStatement.setObject( … , odt ) ;

Table of date-time types in Java (both modern and legacy) and in standard SQL.

0 голосов
/ 04 мая 2019

Я обнаружил, что мне даже не нужно создавать отметку времени в java, просто добавьте CURRENT_TIMESTAMP к месту отметки времени в запросе, где должна быть отметка времени.

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