【发布时间】:2011-12-09 07:13:33
【问题描述】:
我有一个 java 存储过程,我试图将一个 byte[] 数组插入到表中的 oracle blob 字段中。
我如下创建了一个准备好的语句,但是当我执行准备好的语句时它会随机失败。我已经缩小了问题来自 pstmt.setBytes(4,content) 的范围。我得到的错误是:
ORA-01460:请求的转换未实现或不合理。
private static void insertFile(Connection connOracle, int zipFileId, byte[] data, String filepath, String filename ) throws SQLException {
try {
String QUERY = "INSERT INTO files(file_id, zip_file_id, filename, file_path, content) VALUES(SEQ_FILE_ID.nextval,?,?,?,?)";
PreparedStatement pstmt = connOracle.prepareStatement(QUERY);
pstmt.setInt(1,zipFileId);
pstmt.setString(2, filename);
pstmt.setString(3, filepath);
pstmt.setBytes(4, data);
System.out.println("INSERTING file_id " + filepath + ", " + filename + " INTO DATABASE");
pstmt.execute();
pstmt.close();
}
catch (SQLException e) {
throw new SQLException(e.getMessage());
}
【问题讨论】:
-
内容为null或空字符串时是否会出现这种情况?
-
不,如果我注释掉第四个参数,那么一切正常。
-
在问题已得到纠正后删除了我的答案...是
datanon-null? -
我的意思是:
data为 null 或空字符串时会发生这种情况吗? -
不,如果数据为空则不会发生,只有当字节[]数组中有内容时才会发生
标签: java oracle java-stored-procedures