FileInputStream和SQL类型之间的对应关系

时间:2017-05-24 08:11:17

标签: sql spring java-ee stored-procedures blob

我必须将文件作为BLOB发送到存储过程。我找到了一种方法,但我需要采用另一种方式(不是我的应用)。

如果我将文件加载为FileInputStream,那么我可以使用PreparedStatement的setBinaryStream方法将其发送到存储过程。

File b = new File(pathToFile);
FileInputStream fis = new FileInputStream(b);
ps.setBinaryStream(1, fis, (int)b.length());

这样一切正常。

不幸的是,我需要在地图中设置文件,这是Spring类org.springframework.jdbc.core.namedparam.MapSqlParameterSource的基础。

这是一个映射,其中键是一个对应于SQL数据类型的整数,取自类oracle.jdbc.OracleTypes(或java.sql.Types),值是我必须发送的文件。 我试图发送一个BLOB并设置为数据类型OracleTypes.BLOB,但我遇到了一个ArrayIndexOutOfBoundsException。 我还尝试使用数据类型OracleTypes.LONGVARBINARY和LONGVARCHAR发送FileInputStream,但是我收到了ClassCastException。

0 个答案:

没有答案