我从jdbcTemplate执行以下查询时遇到异常
update TEMP_BRD_STATS SET STATS=null WHERE BRDC_STAT_ID=?
以下是例外
org.springframework.jdbc.UncategorizedSQLException:
PreparedStatementCallback; uncategorized SQLException for SQL [update
TEMP_BRD_STATS SET STATS=null WHERE BRDC_STAT_ID=?]; SQL state [null];
error code [0]; ORA-00900: invalid SQL statement
TEMP_BRD_STATS是我的表名,STATS和BRDC_STAT_ID是我表中的列
注意: – STATS列允许使用null
但是,我可以通过提供有效的BRDC_STAT_ID列值在sql developer中成功执行查询.
例如
update TEMP_BRD_STATS SET STATS=null WHERE BRDC_STAT_ID=523;
编辑:以下是JAVA代码
result = this.jdbcTemplate.query("update TEMP_BRD_STATS SET STATS=null WHERE BRDC_STAT_ID=?", new Object[] {523}, new QueryResultSetExtractor());
尽管抛出了异常,但在执行上述代码后,列值会发生变化.
假设我的列STATS具有’SUCCESS’值并且在执行上面的java代码之后值变为null但仍然抛出异常.一种奇怪的场景.
解决方法:
参数?显然没有填写.也许一些参数如:
new Object[] { brdStatId }
在一般的JDBC中,它可能不是使用PreparedStatement.executeUpdate()而是使用基类版本Statement.executeUpdate(String sql).
代码添加后有问题:
啊,查询(SELECT)和更新(INSERT / UPDATE)混淆了:
this.jdbcTemplate.update("update TEMP_BRD_STATS SET STATS=null WHERE BRDC_STAT_ID=?", 523);