我正在尝试使用Calcite Avatica JDBC驱动程序通过Spring Boot项目调用示例Druid数据库。遵循大多数示例,我设计了此查询,如果我传递new Object[] { cityName }
,它将引发异常。但是,如果我传递Object[] {}
,则不会得到相同的异常。
String cityName = "Aachen";
results = jdbcTemplate.query("SELECT cityName, countryName FROM wikipedia WHERE cityName = ?",
new Object[] { cityName },
(rs, rowNum) -> {
return new City(cityName, rs.getString("countryName"));
}
);
这里是例外
org.springframework.jdbc.UncategorizedSQLException: PreparedStatementCallback; uncategorized SQLException for SQL [SELECT cityName, countryName FROM wikipedia WHERE cityName = ?]; SQL state [00000]; error code [-1]; Error -1 (00000) : while preparing SQL: SELECT cityName, countryName FROM wikipedia WHERE cityName = ?; nested exception is org.apache.calcite.avatica.AvaticaSqlException: Error -1 (00000) : while preparing SQL: SELECT cityName, countryName FROM wikipedia WHERE cityName = ?
如果切换到NamedParameterJdbcTemplate
,我什至会得到相同的异常
namedParameterJdbcTemplate.query("SELECT cityName, countryName, comment FROM wikipedia WHERE cityName = :cityName",
new MapSqlParameterSource()
.addValue("cityName", "Aachen"),
(rs, rowNum) -> {
return new SponsoredPostStats(sponsoredPostId, rs.getInt("views"), "");
}
浏览错误列表-Druid不支持准备好的语句。