我使用JDBC连接到oracle数据库。我知道如何检索各种数据(字符串,整数等),但我不知道如何从这个数据库中获取ORDImage。是否有任何ResultSet方法可以实现此目的?
答案 0 :(得分:1)
PreparedStatement的getBlob()用于获取二进制信息,它返回Blob的实例。通过调用blob对象上的getBytes()方法,您将获得可以写入图像文件的二进制信息数组。
这是代码..
PreparedStatement ps = con.prepareStatement("select * from MyImageTable");
ResultSet rs = ps.executeQuery();
if(rs.next()){
Blob blob = rs.getBlob(2); //Here 2 is second column data
byte b[] = blob.getBytes(1,(int)b.length()); //Here 1 represent first image
FileOutputStream output = new FileOutputStream("e:\\some_pic.jpg"); //path goes here
output.write(b);
output.close();
答案 1 :(得分:0)
查看oracle jdbc开发人员指南的streaming lobs部分。有几种方法可以访问数据。不同选项会对内存/性能产生不同的影响。最简单的解决方案可能是ResultSet.getBinaryStream。但是,如果您需要有关数据长度的信息,还可以使用getBlob。
答案 2 :(得分:0)
有很多方法可以显示从Java库中的数据库中检索图像的方法,这是从数据库中检索图像到Java swing窗体的最佳方法,并且可以根据所需的大小以JLable显示。
ResultSet rs = stmnt.executeQuery("select * from table1 ");
Blob blob= rs.getBlob("image");
byte bt[]= blob.getBytes(1,(int)blob.length());
Image img= ImageIO.read(new ByteArrayInputStream(bt));
Image img1= img.getScaledInstance(200,230,Image.SCALE_SMOOTH);
ImageIcon icon= new ImageIcon(img1);
JLable1.setIcon(icon);