Java教程-从Oracle数据库中检索图像的示例

从Oracle数据库中检索图像的示例
通过使用PreparedStatement,我们可以从数据库中检索和存储图像。
PreparedStatement的getBlob()方法用于获取二进制信息,它返回Blob的实例。在Blob对象上调用getBytes()方法后,我们可以获得二进制信息的数组,可以将其写入图像文件中。
PreparedStatement的getBlob()方法的签名
public Blob getBlob()throws SQLException
Blob接口的getBytes()方法的签名
public byte[] getBytes(long pos, int length)throws SQLException
我们假设图像存储在imgtable中。
1. CREATE TABLE "IMGTABLE"
2. ( "NAME" VARCHAR2(4000),
3. "PHOTO" BLOB
4. )
5. /
现在让我们编写代码从数据库中检索图像并将其写入目录中,以便可以显示。
在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图像文件。