Oracle: преобразовать дату Java в дату Oracle в программе Java

У меня есть программа Java, которая считывает дату как строку из входного файла и обновляет таблицу Oracle, где эта дата является частью полей индекса.

Я пробовал следующие варианты:

а) Чтение данных из CSV-файла, разделенного ; как строка

109920541;2013-01-17 11:48:09;EDWARD ANTHONY;

б) Используя SimpleDateFormat, преобразуйте строку в дату в подпрограмме:

  java.text.SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
  java.util.Date dt = formatter.parse("2013-01-17 11:48:09");

c) Используйте эту дату для подготовки моего sql stmt:

String update_query = "UPDATE "+ tableName +" SET NAME = ? WHERE ID = ? AND DATE_TIME = ?";
java.sql.Connection conn = java.sql.DriverManager.getConnection(dbUrl, dbUser, dbPwd);  
java.sql.PreparedStatement pstmt = conn.prepareStatement(update_query);
if (dt not null) {
  pstmt.setObject(1, new java.sql.Timestamp(dt.getTime()),java.sql.Types.DATE);
}
pstmt.executeBatch();

г) Это не находит дату, которая является частью ключа, и поэтому данные не обновляются.

В разработчике sql я использую следующий запрос для извлечения строки:

SELECT * FROM table
WHERE ID = '1099205410'
AND DATE_TIME = TO_DATE('2013-01-17 11:48:09', 'YYYY-MM-DD HH24:MI:SS');

Как преобразовать строку Java в дату Oracle?

Спасибо.

Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
0
61
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Для одной строки:

pstmt.setString(1, name);
pstmt.setInt(2 id);
pstmt.setTimeStamp(3, ew java.sql.Timestamp(dt.getTime()));
pstmt.executeUpdate();

Если значение DATE_TIME не всегда присутствует в данных CSV, просто используйте второй PreparedStatement; всего с 2-мя параметрами.

Если вы используете цикл, читающий строки, сделайте

for ... {
    ...
    pstmt.clearParameters();
    pstmt.setString(1, name);
    pstmt.setInt(2 id);
    pstmt.setTimeStamp(3, new java.sql.Timestamp(dt.getTime()));
    pstmt.addBatch();
}
pstmt.executeBatch();

Вы можете рассмотреть возможность использования новых API времени.

(ОБНОВЛЕНИЕ для записей существующий.)

Другие вопросы по теме