我有一个返回 BLOB 的数据库过程。谁能告诉我如何操作 BLOB?是否有任何特定的 API?
原文由 Parth Trivedi 发布,翻译遵循 CC BY-SA 4.0 许可协议
我有一个返回 BLOB 的数据库过程。谁能告诉我如何操作 BLOB?是否有任何特定的 API?
原文由 Parth Trivedi 发布,翻译遵循 CC BY-SA 4.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 许可协议
4 回答998 阅读✓ 已解决
4 回答1.1k 阅读✓ 已解决
1 回答2.5k 阅读✓ 已解决
1 回答1.9k 阅读✓ 已解决
2 回答681 阅读✓ 已解决
2 回答1.6k 阅读
2 回答1.6k 阅读
当然,JDBC API。
您获取
Blob
实例就像您获取结果集中的任何值一样。然后,您应该在此Blob
上使用get...
- 和set...
方法。在这里你基本上有两个选择:
使用字节数组:
byte[]
获取包含数据的Blob.getBytes
Blob.setBytes
将其重新设置。使用
InputStream
/OutputStream
:InputStream
通过Blob.getBinaryStream
Blob.setBinaryStream
。另一种方法是首先跳过
Blob
的混乱,而是直接通过ResultSet
使用第二种方法(使用流)。