如何将BLOB文件插入Oracle过程?

时间:2019-02-19 06:11:42

标签: java spring oracle spring-mvc oracle11g

我在Oracle数据库中有一个名为 DOC_FILE 且类型为 BLOB 的列。在我的java类中,我已将其声明为 private byte [ ] docFile; 我有一个声明为:

的类
public class LetterDoc {

    private BigDecimal letterNo;
    private BigDecimal docId;
    private byte[] docFile;
    private String entryBy;
    private String rStatus;
    private String othersDescription;
    private BigDecimal seqNo;

//omitted getters and setters 
}

这里有private byte[] docFile;,它声明用于在Oracle数据库中插入Image / PDF。因此,在我的DaoImpl类中,在oracle数据库中更新的方法是:

    @Repository
    public class LetterDocDaoImpl implements LetterDocDao { 

    @Autowired
    private JdbcTemplate jdbcTemplate;

    @Override
        public void updateLetterDoc(LetterDoc letterDoc) {
            SimpleJdbcCall updateStausAfterSubmit = new SimpleJdbcCall(jdbcTemplate).
                    withProcedureName("PCPR_EDIT_LETTER_DOC");
            Map<String, Object> inParamMap = new HashMap<String, Object>();

            inParamMap.put("P_LETTER_NO",letterDoc.getLetterNo());
            inParamMap.put("P_DOC_ID", letterDoc.getDocId());
            inParamMap.put("P_DOC_FILE",letterDoc.getDocFile());
            inParamMap.put("P_SEQ_NO",letterDoc.getSeqNo());
            inParamMap.put("P_OTHERS_DESCRIPTION",letterDoc.getOthersDescription());
        }

     }

我已经使用 base64编码发送了imageFile(我没有粘贴所有那些base64代码,因为它太大了):

{  
   docId:1,
   letterNo:1,
   seqNo:1,
 docFile:iVBORw0KGgoAAAANSUhEUgAAAsQAAAHgCAYAAACigHs+AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAP+lSURBVHhe7H0FgB1F1vW4W5xAiI5PJglBFocFls
}

因此,当我尝试插入BLOB文件时出现错误 inParamMap.put(“ P_DOC_FILE”,letterDoc.getDocFile());  但这给我的错误是:

  

严重:Servlet [dispatcher]中的Servlet.service()   路径抛出异常[请求处理失败;嵌套异常为   org.springframework.jdbc.UncategorizedSQLException:   CallableStatementCallback;未分类的SQLException for SQL [{call   PCPR_EDIT_LETTER_DOC(?,?,?,?,?)}]; SQL状态[99999];错误代码   [17004];无效的列类型;嵌套异常为   java.sql.SQLException:无效的列类型],具有根本原因   java.sql.SQLException:无效的列类型

0 个答案:

没有答案