如何在Java中操作BLOB?

Par*_*edi 10 java blob

我有一个返回BLOB的DB过程.谁能告诉我如何操纵BLOB?这有什么特定的API吗?

aio*_*obe 14

这有什么特定的API吗?

当然,JDBC API.


你得到的保持Blob,就像你从结果集中得到任何价值的持有情况.然后你应该使用get...- 和set...方法Blob.

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

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


Kra*_*ack 5

这取决于哪种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)