NamedParameterJdbcTemplate不能替换值?

时间:2014-10-23 20:03:44

标签: java spring jdbc

我是Spring的新手,并尝试编写一个使用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中,该查询应返回今天的日期。但是,我得到一个例外:

  

线程中的异常" main"   org.springframework.jdbc.BadSqlGrammarException:   PreparedStatementCallback;错误的SQL语法[SELECT CURRENT DATE FROM?   ];嵌套异常是com.ibm.db2.jcc.am.SqlSyntaxErrorException:   DB2 SQL错误:SQLCODE = -104,SQLSTATE = 42601,SQLERRMC =?;(   XMLTABLE TABLE FINAL OLD,DRIVER = 4.13.127

SQLCODE -104是"非法符号。"我想这是指?。为什么它而不是"sysibm.sysdummy1"字符串?

1 个答案:

答案 0 :(得分:2)

您无法将表名设置为参数。您需要在查询中明确定义它。