JdbcTemplate更新Oracle的BLOB字段报错
使用JdbcTemplate更新Oracle的BLOB字段报错,报错信息
SQL state [99999]; error code [17004]; Invalid column type; nested exception is java.sql.SQLException: Invalid column type 无效的列类型
采用LobHandler的lobCreator.setBlobAsBytes();仍然报错无效的列类型。
具体查看此博客添加链接描述
解决方法
采用MapSqlParameterSource和NamedParameterJdbcTemplate来操作BLOB字段。该update方法继承的是JdbcTemplate的update方法,有释放链接的方法在底层,无需手动释放链接。
public void updateImage(Integer id, byte[] imageData) {
MapSqlParameterSource in = new MapSqlParameterSource();
in.addValue("id", id);
in.addValue("image", new SqlLobValue(new ByteArrayInputStream(imageData),
imageData.length, new DefaultLobHandler()), Types.BLOB);
String SQL = "update Student set image = :image where id = :id";
NamedParameterJdbcTemplate jdbcTemplateObject = new
NamedParameterJdbcTemplate(dataSource);
jdbcTemplateObject.update(SQL, in);
System.out.println("Updated Record with ID = " + id );
}