Java 从JdbcTemplate查询Blob时出现连接关闭错误
我正在从数据库查询一个BLOB对象,并试图将其写入文件系统,但我一直遇到连接关闭错误。这是密码Java 从JdbcTemplate查询Blob时出现连接关闭错误,java,spring,jdbc,blob,jdbctemplate,Java,Spring,Jdbc,Blob,Jdbctemplate,我正在从数据库查询一个BLOB对象,并试图将其写入文件系统,但我一直遇到连接关闭错误。这是密码 FileOutputStream out; out = new FileOutputStream(filePathtoCreate+File.separator+filename); Blob inBlob= jdbcTemplate.queryForObject("select BLOB_CONTENT from Table_A where name = ?" , Blob.cl
FileOutputStream out;
out = new FileOutputStream(filePathtoCreate+File.separator+filename);
Blob inBlob= jdbcTemplate.queryForObject("select BLOB_CONTENT from Table_A where name = ?" , Blob.class,new Object[] { filename});
InputStream in = inBlob.getBinaryStream();
byte[] buf = new byte[1024];
int len = 0;
while ((len = in.read(buf)) != -1) {
out.write(buf, 0, len);
}
in.close();
out.close();
} catch (SQLException | IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
当我运行这段代码时,我得到
java.sql.SQLRecoverableException: Closed Connection
at oracle.sql.BLOB.getDBAccess(BLOB.java:1122)
at oracle.sql.BLOB.getBinaryStream(BLOB.java:265)
如果我使用常规的JDBC连接,我不会遇到这个问题,所以为什么会发生这种情况,以及如何解决它。提前谢谢 你可以在里面读Blob,:
查询给定的SQL以从SQL创建一个准备好的语句,并创建一个要绑定到查询的参数列表,通过行映射器将每一行映射到一个结果对象
jdbcTemplate.query("select * from Report where id =?",
new Object[]{id}, (resultSet, i) -> {
return toReport(resultSet);
});
private Report toReport(ResultSet resultSet) throws SQLException {
InputStream contentStream = resultSet.getClob("CONTENT")
.getAsciiStream();
String content =
new Scanner(contentStream, "UTF-8").useDelimiter("\\A").next();
report.setContent(content);
Blob blob = resultSet.getBlob("IMAGE");