📌  相关文章
📜  Java Oracle数据库检索图像示例

📅  最后修改于: 2020-10-13 01:28:54             🧑  作者: Mango

从Oracle数据库检索图像的示例

借助PreparedStatement,我们可以检索图像并将其存储在数据库中。

PreparedStatement的getBlob()方法用于获取二进制信息,它返回Blob的实例。在blob对象上调用getBytes()方法之后,我们可以获得可以写入图像文件的二进制信息数组。

PreparedStatement的getBlob()方法的Signature(签名)

public Blob getBlob()throws SQLException

Blob接口的getBytes()方法的Signature(签名)

public  byte[] getBytes(long pos, int length)throws SQLException

我们假设图像存储在imgtable中。

CREATE TABLE  "IMGTABLE" 
   ("NAME" VARCHAR2(4000), 
"PHOTO" BLOB
   )
/

现在,让我们编写代码以从数据库中检索图像并将其写入目录,以便可以显示它。

在AWT中,可以由Toolkit类显示它。在servlet,jsp或html中,可以通过img标签显示它。

import java.sql.*;
import java.io.*;
public class RetrieveImage {
public static void main(String[] args) {
try{
Class.forName("oracle.jdbc.driver.OracleDriver");
Connection con=DriverManager.getConnection(
"jdbc:oracle:thin:@localhost:1521:xe","system","oracle");

PreparedStatement ps=con.prepareStatement("select * from imgtable");
ResultSet rs=ps.executeQuery();
if(rs.next()){//now on 1st row

Blob b=rs.getBlob(2);//2 means 2nd column data
byte barr[]=b.getBytes(1,(int)b.length());//1 means first image

FileOutputStream fout=new FileOutputStream("d:\\sonoo.jpg");
fout.write(barr);
    
fout.close();
}//end of if
System.out.println("ok");

con.close();
}catch (Exception e) {e.printStackTrace();}
}
}

现在,如果您看到d驱动器,则将创建sonoo.jpg图像。