首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >JDBCTemplate/NamedParameterJdbcTemplate无法插入FileItem/Blob

JDBCTemplate/NamedParameterJdbcTemplate无法插入FileItem/Blob
EN

Stack Overflow用户
提问于 2019-03-24 15:02:03
回答 1查看 480关注 0票数 0

我有一个将FileItem fileItem插入到BLOB列的普通PreparedStatement

代码语言:javascript
复制
ps.setBinaryStream(1, fileItem.getInputStream(), (int) fileItem.getSize());

我可以在NamedParameterJdbcTemplate中输入FileItem的问题

我试着用Types.BLOB

代码语言:javascript
复制
MapSqlParameterSource paramSource = new MapSqlParameterSource();
paramSource.addValue("blob",  fileItem.getInputStream(), Types.BLOB);
jdbcTemplate.update(INSERT_FILE, paramSource);

但得到了异常

代码语言:javascript
复制
SQL state [99999]; error code [17004]; Invalid column type; nested exception is java.sql.SQLException: Invalid column type

Caused by: java.sql.SQLException: Invalid column type
    at oracle.jdbc.driver.OraclePreparedStatement.setObjectCritical(OraclePreparedStatement.java:10503)
    at oracle.jdbc.driver.OraclePreparedStatement.setObjectInternal(OraclePreparedStatement.java:9974)
    at oracle.jdbc.driver.OraclePreparedStatement.setObject(OraclePreparedStatement.java:10581)
    at oracle.jdbc.driver.OraclePreparedStatementWrapper.setObject(OraclePreparedStatementWrapper.java:249)
    at com.zaxxer.hikari.pool.HikariProxyPreparedStatement.setObject(HikariProxyPreparedStatement.java)
    at org.springframework.jdbc.core.StatementCreatorUtils.setValue(StatementCreatorUtils.java:469)
    at org.springframework.jdbc.core.StatementCreatorUtils.setParameterValueInternal(StatementCreatorUtils.java:241)
    at org.springframework.jdbc.core.StatementCreatorUtils.setParameterValue(StatementCreatorUtils.java:156)
    at org.springframework.jdbc.core.PreparedStatementCreatorFactory$PreparedStatementCreatorImpl.setValues(PreparedStatementCreatorFactory.java:292)
    at org.springframework.jdbc.core.PreparedStatementCreatorFactory$PreparedStatementCreatorImpl.createPreparedStatement(PreparedStatementCreatorFactory.java:244)
    at org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:633)

与带有参数BLOB filejdbcTemplate相同的错误

代码语言:javascript
复制
jdbcTemplate.update(INSERT_FILE, file);

使用与FileInputStream不同的参数类似地失败

我正在尝试保存一个(二进制)图像文件

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-03-24 22:53:44

只有当我将参数类型更改为byte[]时,它才起作用

代码语言:javascript
复制
 byte[] blob

并在insert中使用它:

代码语言:javascript
复制
jdbcTemplate.update(INSERT_FILE, blob);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55321445

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档