我想将blob插入oracle数据库中的表。但我不知道其他列的数据类型。我想在Object类型中为其他列传递值。
我知道我可以使用以下代码插入blob值。
jdbcTemplate.update(
"INSERT INTO LOB_ (BLOB_) VALUES (?)",
new Object[]{new SqlLobValue(inputStream)},
new int[]{Types.BLOB}
);
但我的问题是,我不知道其他列的类型。那么如何将类型数组中的类型指定为update(query, args, typeArgs)
方法的第三个参数。
是否有任何值像通配符传递告诉jdbctemplate跳过检查其他列的类型?
我想要这样的东西?
jdbcTemplate.update(
"INSERT INTO LOB_ (BLOB_, NAME, AGE) VALUES (?, ?, ?)",
new Object[]{new SqlLobValue(inputStream), "Some string", 34},
new int[]{Types.BLOB, ?, ?}
);
答案 0 :(得分:0)
请试试以下内容。 https://docs.spring.io/spring/docs/current/spring-framework-reference/html/jdbc.html
final File blobIn = new File("spring2004.jpg");
final InputStream blobIs = new FileInputStream(blobIn);
final File clobIn = new File("large.txt");
final InputStream clobIs = new FileInputStream(clobIn);
final InputStreamReader clobReader = new InputStreamReader(clobIs);
jdbcTemplate.execute(
"INSERT INTO lob_table (id, a_clob, a_blob) VALUES (?, ?, ?)",
new AbstractLobCreatingPreparedStatementCallback(lobHandler) { 1
protected void setValues(PreparedStatement ps, LobCreator lobCreator) throws SQLException {
ps.setLong(1, 1L);
lobCreator.setClobAsCharacterStream(ps, 2, clobReader, (int)clobIn.length()); 2
lobCreator.setBlobAsBinaryStream(ps, 3, blobIs, (int)blobIn.length()); 3
}
}
);
blobIs.close();
clobReader.close();