我有一个文件上传控件,用户可以通过该控件将图像文件上传到数据库表。
目前我正在使用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
任何人都可以帮助我,我做错了什么,解决方案是什么