在java中更新blob

时间:2015-08-31 14:54:31

标签: java mysql prepared-statement

当我想更新表格中的blob列时出现此错误

  

结果集不可更新。此结果集必须来自语句   使用ResultSet.CONCUR_UPDATABLE的结果集类型创建的,   查询必须只选择一个表,不能使用函数和必须   从该表中选择所有主键。请参阅JDBC 2.1 API   规范,第5.6节了解更多细节。必须提供此结果集   来自使用结果集类型创建的语句   ResultSet.CONCUR_UPDATABLE,查询必须只选择一个表,才可以   不使用函数,必须从该表中选择所有主键。   有关更多详细信息,请参阅JDBC 2.1 API规范,第5.6节。

但我的陈述是可以更新的! 有谁能够帮我 ?

这是我创建语句的代码

public PreparedStatement getPreparedStatement(String sql) {
    try {
        return con.prepareStatement(sql,ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_UPDATABLE);
    } catch (SQLException ex) {
        Logger.getLogger(DatabaseAccessor.class.getName()).log(Level.SEVERE, null, ex);
    }
    return null;
}

这就是我想要更新blob的方式

resultSet.updateBlob("mainPic", mainPic.getInputStream());

1 个答案:

答案 0 :(得分:0)

这是我的代码:

DatabaseAccessor accessor = new DatabaseAccessor();
PreparedStatement statement = accessor.getPreparedStatement("SELECT * FROM  mainpage WHERE ID=0");
ResultSet resultSet = statement.executeQuery();
resultSet.next();

mainPic = request.getPart("mainPic");
resultSet.updateBlob("mainPic", mainPic.getInputStream());