加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

PostgreSQL操作大对象的三种方法

发布时间:2020-12-13 18:00:24 所属栏目:百科 来源:网络整理
导读:PostgreSQL 中有 2 种数据类型可以存储大对象: bytea 和 oid 两种。而利用 bytea 操作时候也有 2 种不同的方法 方法一:在 JAVA 中利用 byte[] 读取 bytea 类型( image 为 bytea 类型) byte [] imgBytes = rs.getBytes( "image" ); Image image = Toolkit

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读