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

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

猜你在找的Postgre SQL相关文章