操作数类型冲突:varbinary与文本不兼容

时间:2012-02-03 06:30:56

标签: java spring jdbc

我有一个文件上传控件,用户可以通过该控件将图像文件上传到数据库表。

目前我正在使用RDBMS 1)Postgresql和2)SQL服务器

在我的postgres数据库表列中,文件i使用datatypeas bytea 在我的sql server数据库表列中的文件我使用数据类型作为文本

这是我的方法

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) {
                e.printStackTrace();
            }
            pSstatement.setInt(3, rentProofInfoId);

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

此代码与postgresql以及oracle一起工作正常但是当我尝试在sql server中上传图像文件时,我收到此错误。

org.springframework.dao.DataIntegrityViolationException: PreparedStatementCallback; SQL [update plit_landlordinfo2011 set filename=?,declarationform=? where cid=?]; Operand type clash: varbinary is incompatible with text; nested exception is java.sql.SQLException: Operand type clash: varbinary is incompatible with text

任何人都可以帮助我,我做错了什么,解决方案是什么

0 个答案:

没有答案