PostgreSQL中有2种数据类型可以存储大对象:bytea和oid两种。而利用bytea操作时候也有2种不同的方法
方法一:在JAVA中利用byte[]读取bytea类型(image为bytea类型)
byte[] imgBytes = rs.getBytes("image");
Image image = Toolkit.getDefaultToolkit().createImage(imgBytes);
方法二:在JAVA中利用InputStream读取bytea类型(image为bytea类型)
InputStream stream = rs.getBinaryStream("image");
Image image = ImageIO.read(stream);
方法三:利用oid类型(picture 为oid类型)
conn.setAutoCommit(false); LargeObjectManager lobj = ((org.postgresql.PGConnection) conn) .getLargeObjectAPI(); PreparedStatement ps = conn .prepareStatement("SELECT picture FROM resume WHERE /"NAME/"=?"); ps.setString(1,"myimage.gif"); ResultSet rs = ps.executeQuery(); if (rs != null) { while (rs.next()) { // 打开大对象读 int oid = rs.getInt(1); LargeObject obj = lobj.open(oid,LargeObjectManager.READ); // 读取数据 byte buf[] = new byte[obj.size()]; obj.read(buf,obj.size()); obj.close(); } rs.close(); } ps.close(); conn.commit();
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。