java 将 Blob 插入为 ByteArrayOutputStream 获取 ClassCastException

标签 java sql casting blob bytearrayoutputstream

我必须将表示为 ByteArrayOutputStream 的 pdf 文件保存到表的 Blob SQL 字段中,这是我的代码:

public boolean savePDF(int version, ByteArrayOutputStream baos) throws Exception{
    boolean completed = false;
    ConnectionManager conn = new ConnectionManager();
    try {
        PreparedStatement statement = conn.getConnection().prepareStatement(INSERT_PDF);
        statement.setLong(1, version);
        statement.setBlob(2, (Blob)baos);           
        statement.execute();
        conn.commit();
        completed = true;
    } catch (SQLException e) {
        conn.rollbackQuietly();
        e.printStackTrace();
        throw e;
    } catch (ClassNotFoundException e) {
        e.printStackTrace();
    }finally{
        conn.close();
    }                           
    return completed;       
}

但是我得到了 java.lang.ClassCastException:

java.io.ByteArrayOutputStream cannot be cast to java.sql.Blob

我该如何处理?谢谢

最佳答案

有一个 setBlob 需要一个 InputStream,所以

ByteArrayInputStream bais = new ByteArrayInputStream(baos.toByteArray());
statement.setBlob(2, bais);

关于java 将 Blob 插入为 ByteArrayOutputStream 获取 ClassCastException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13293828/

相关文章:

java - 根据内容检测文件类型

java - Jenkins:是否可以从 CLI 运行恢复到以前的配置?

php - 使用数组 SQL 获取 ID

sql - SQL 中的递归

MySQL 查询问题 - 添加额外和总计

c++ - std::any_cast 不需要原始对象的类型

java - Neo4j 单元测试和 APOC

java - 是否存在可以帮助查找 PMML 语法和/或逻辑错误的 PMML 调试器?

java - 类型转换和编译时间常量

c - 返回类型是否节省空间或时间