Я новичок в Spring и пытаюсь написать простой метод тестирования, который использует NamedParameterJdbcTemplate. Вот он:NamedParameterJdbcTemplate не подставляя значения?
public String test() {
String query = "SELECT CURRENT DATE FROM :table ;";
return String.valueOf(this.namedTemplate.queryForObject(query,
new MapSqlParameterSource("table", "sysibm.sysdummy1"),
String.class));
}
В DB2 этот запрос должен возвращать сегодняшнюю дату. Однако я получаю исключение:
Exception in thread "main" org.springframework.jdbc.BadSqlGrammarException: PreparedStatementCallback; bad SQL grammar [SELECT CURRENT DATE FROM ? ;]; nested exception is com.ibm.db2.jcc.am.SqlSyntaxErrorException: DB2 SQL Error: SQLCODE=-104, SQLSTATE=42601, SQLERRMC=?;( XMLTABLE TABLE FINAL OLD, DRIVER=4.13.127
SQLCODE -104 является «незаконным символом». Я предполагаю, что это относится к ?
. Почему получается, что вместо строки "sysibm.sysdummy1"
?
Ah ha. Спасибо. Это также относится к именам схем? – stackexchanger
Да. В PreparedStatement только параметры могут быть определены с помощью '?'. –