如何在 Java 中操作 BLOB?

新手上路,请多包涵

我有一个返回 BLOB 的数据库过程。谁能告诉我如何操作 BLOB?是否有任何特定的 API?

原文由 Parth Trivedi 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 423
2 个回答

是否有任何特定的 API?

当然,JDBC API。


您获取 Blob 实例就像您获取结果集中的任何值一样。然后,您应该在此 Blob 上使用 get... - 和 set... 方法。

在这里你基本上有两个选择:

另一种方法是首先跳过 Blob 的混乱,而是直接通过 ResultSet 使用第二种方法(使用流)。

原文由 aioobe 发布,翻译遵循 CC BY-SA 3.0 许可协议

这取决于包含哪种 blob(图像、视频)及其扩展名。我编写了一个简单的程序来从数据库中检索图像并将其显示在 JSP 页面中。希望能帮助到你。

JSP页面

<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>JSP Page</title>
</head>
<body>
    <image src="blobAction"/>
</body>

小服务页面

byte[] imgData = blobDao.getInstance().getPhoto();
        response.setContentType("image/gif");
        OutputStream o = response.getOutputStream();
        o.write(imgData);
        o.flush();
        o.close();

调用程序

public byte[] getPhoto() {

    byte[] imgData = null;
    Blob img = null;
    ResultSet rs = null;
    Statement stmt = null;

    try {

        conn = getConnection();
        String sqlQ = "SELECT CONTENT_FILE FROM CONTENT where id = 'something';
        stmt = conn.createStatement();
        rs = stmt.executeQuery(sqlQ);

        while (rs.next()) {
            img = rs.getBlob("CONTENT_FILE");
            imgData = img.getBytes(1, (int) img.length());
        }
        rs.close();
        stmt.close();
        conn.close();
    } catch (Exception ex) {
        ex.printStackTrace();
    } finally {
        return imgData;
    }
}

原文由 Krack 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题