PostgreSQL操作大对象的三种方法

前端之家收集整理的这篇文章主要介绍了PostgreSQL操作大对象的三种方法前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

Postgresql中有2种数据类型可以存储大对象:byteaoid两种。而利用bytea操作时候也有2种不同的方法

方法一:在JAVA中利用byte[]读取bytea类型(imagebytea类型)

byte[] imgBytes = rs.getBytes("image");

Image image = Toolkit.getDefaultToolkit().createImage(imgBytes);

方法二:在JAVA中利用InputStream读取bytea类型(imagebytea类型)

InputStream stream = rs.getBinaryStream("image");

Image image = ImageIO.read(stream);

方法三:利用oid类型(picture oid类型)

  1. conn.setAutoCommit(false);
  2.  
  3. LargeObjectManager lobj = ((org.postgresql.PGConnection) conn)
  4. .getLargeObjectAPI();
  5. PreparedStatement ps = conn
  6. .prepareStatement("SELECT picture FROM resume WHERE /"NAME/"=?");
  7. ps.setString(1,"myimage.gif");
  8. ResultSet rs = ps.executeQuery();
  9. if (rs != null) {
  10. while (rs.next()) {
  11. // 打开大对象读
  12. int oid = rs.getInt(1);
  13. LargeObject obj = lobj.open(oid,LargeObjectManager.READ);
  14. // 读取数据
  15. byte buf[] = new byte[obj.size()];
  16. obj.read(buf,obj.size());
  17. obj.close();
  18. }
  19. rs.close();
  20. }
  21. ps.close();
  22. conn.commit();

猜你在找的Postgre SQL相关文章