我必须将文件作为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。