微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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类型)

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();

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐