在java中为byte []准备语句

时间:2011-12-26 05:43:24

标签: java

我有一个数据库表,其中一列(declatationform)的类型为“bytea”我想在此列中存储图像,所以我返回一个方法

public void uploadRentProofDeclaration(final MultipartFile declarationForm,
        final int rentProofInfoId, int year) {

    String updateSql = "update plit_landlordinfo" + year
            + " set filename=?,declarationform=? where cid=?";
    getJdbcTemplate().execute(updateSql, new PreparedStatementCallback() {
        public Object doInPreparedStatement(
                final PreparedStatement pSstatement) throws SQLException,
                DataAccessException {
            pSstatement.setString(1, declarationForm.getOriginalFilename());

            try {
                pSstatement.setBinaryStream(2, new ByteArrayInputStream(
                        declarationForm.getBytes()), declarationForm
                        .getBytes().length);
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            pSstatement.setInt(3, rentProofInfoId);

            pSstatement.execute();
            return null;
        }
    });
}

这里发生的事情是文件名正在保存但是byte []仍然没有保存我的表中的列是空白的并且它没有给出任何错误可以任何人帮助我什么是问题

1 个答案:

答案 0 :(得分:0)

请注意来自getBytes()的{​​{1}}如何工作(即方法被调用两次)?尝试从getBytes()方法存储字节数组。

declarationForm

或者您也可以使用PreparedStatement.setBytes()方法。

 byte []bytes=declarationForm.getBytes();
 pSstatement.setBinaryStream(2, new ByteArrayInputStream(bytes),bytes.length);