#java #postgresql #jdbc
Вопрос:
Я нажимаю на запрос:
SELECT *
FROM test_test
where user_id_one = 123456789
and user_id_two = 123456788
and action_taken = 'CHECK'
and games_type = 'LUDDO'
and modified_on >= '2021-10-07 05:53:48'::timestamp
and modified_on < '2021-10-07 05:53:49'::timestamp
Я получаю результат в консоли pgAdmin, но когда я пытаюсь сделать то же самое с помощью кода Java, он не работает:
ps = conn.prepareStatement("SELECT * FROM test_test where user_id_one = ? and user_id_two = ? and action_taken = ? and games_type = ? and modified_on >= ?::timestamp and modified_on < ?::timestamp");
ps.setInt(1,testTest.getUserIdOne());
ps.setInt(2,testTest.getUserIdTwo());
ps.setString(3,testTest.getActionTaken());
ps.setString(4,testTest.getGamesType());
ps.setString(5,new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(collusionDashboard.getModifiedOn().toDate()));
ps.setString(6,new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(collusionDashboard.getModifiedOn().plusSeconds(1).toDate()));
resultSet = ps.executeQuery();
log.info("{}",ps);
if (resultSet.next()) == getting false here {
}
Когда я регистрировал данные, я получал тот же запрос, что и упомянутый выше.
Комментарии:
1. вы не должны передавать значения временных меток в виде строк. Передайте момент
LocalDateTime
использованияsetObject()
Ответ №1:
Вы пытаетесь зарегистрировать объект prepareStatement, вместо этого попробуйте зарегистрировать объект набора результатов.