Я тестировал код снова и снова, обнаружив, что проблема является одиночной цитатой. Как вы можете видеть в следующем запросе, я использовал одиночную цитату в предложении where. Если я удалю это, я получаю результат, но если я верну его, даже если строки, которые удовлетворяют фильтру, ничего не возвращают. Я также попытался использовать представление об этом. Помещение предложения where в представление и выбор вида напрямую, а не использование какого-либо фильтра. Тем не менее он ничего не возвращает.Java JDBC Postgres: выберите с одной цитатой
try {
Class.forName("org.postgresql.Driver").newInstance();
Connection Conn = DriverManager.getConnection("jdbc:postgresql://{ipaddress}/database?user=postgres&password=password");
Statement Stmt = Conn.createStatement();
String sqlCommand = "SELECT col1_timestamp , col2 FROM table WHERE col1_timestamp > '00:01:00' ";
ResultSet RS = Stmt.executeQuery(sqlCommand);
while (RS.next()) {
data.add(RS.getInt("col1_timestamp ")
+ "=>" + RS.getString("col2"));
}
// Clean up after ourselves
RS.close();
Stmt.close();
Conn.close();
}
catch (SQLException E) {
System.out.println("SQLException: " + E.getMessage());
System.out.println("SQLState: " + E.getSQLState());
System.out.println("VendorError: " + E.getErrorCode());
}
catch(Exception ex)
{
System.out.println(ex.getMessage());
}
я уже пробовал:
String sqlCommand = "SELECT col1_timestamp, col2 FROM table "
+ " WHERE col2= ? AND (now() - col1_timestamp::timestamp with time zone) < interval ? ";
PreparedStatement preparedStatement = Conn.prepareStatement(sqlCommand);
preparedStatement.setString(1, "test");
preparedStatement.setTime(2, new Time(new Long(-28680000))); //String(2, "00:02:00");
Тем не менее не работает, вместо этого он выдает ошибку на втором параметре.
Это довольно простая задача, но она всегда возвращает пустое значение.
Любая идея?
- это единственная цитата, которая вызывает беспокойство? Когда я также пытался использовать представление, это выходит неправильно. – oneofakind
Пробовал это, и он выдает ошибку во втором параметре, говоря о ERROR: синтаксическая ошибка в точке или около $ 2 – oneofakind
@oneofakind: не уверен, что вы имеете в виду с проблемой одиночных кавычек. Код, как я показал, работает для меня, должно быть, вы не говорите нам. Также ваше сообщение об ошибке также не соответствует коду. В моем примере нет 2 доллара –