aio*_*obe 14
这有什么特定的API吗?
当然,JDBC API.
你得到的保持Blob,就像你从结果集中得到任何价值的持有情况.然后你应该使用get...- 和set...方法Blob.
这里你基本上有两个选择:
使用字节数组:
byte[]包含数据的通道Blob.getBytesBlob.setBytes.使用InputStream/ OutputStream:
InputStream通道Blob.getBinaryStreamBlob.setBinaryStream.
另一种方法是首先跳过乱码Blob,而是直接通过接口使用第二种方法(使用流)ResultSet.
这取决于哪种blob包含(图像,视频)和它的扩展.我写了一个简单的程序来从DB中检索图像并在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>
Run Code Online (Sandbox Code Playgroud)
Servlet页面
byte[] imgData = blobDao.getInstance().getPhoto();
response.setContentType("image/gif");
OutputStream o = response.getOutputStream();
o.write(imgData);
o.flush();
o.close();
Run Code Online (Sandbox Code Playgroud)
呼叫程序
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;
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
42806 次 |
| 最近记录: |