使用Java在Postgresql中存储和检索图像

我是Java编程的新手,我正在搜索Java代码以将图像存储在PostgreSQL中并检索图像。

在PostgreSQL中,我使用了Bytea数据类型。图像已存储。但是当我检索时,我得到NULL。我无法获得图像。

对此的任何示例或对此的任何其他建议将是有帮助的。

回答:

PostgreSQL

jdbc文档的第7章介绍了如何存储二进制数据并使用图像(* .gif文件)作为示例。您可能想要阅读它。

将图像插入数据库(通过上面的链接)

File file = new File("myimage.gif");

FileInputStream fis = new FileInputStream(file);

PreparedStatement ps = conn.prepareStatement("INSERT INTO images VALUES (?, ?)");

ps.setString(1, file.getName());

ps.setBinaryStream(2, fis, (int)file.length());

ps.executeUpdate();

ps.close();

fis.close();

从数据库(也从上面的链接)读取图像

// Get the Large Object Manager to perform operations with

LargeObjectManager lobj = ((org.postgresql.PGConnection)conn).getLargeObjectAPI();

PreparedStatement ps = conn.prepareStatement("SELECT imgoid FROM imageslo WHERE imgname = ?");

ps.setString(1, "myimage.gif");

ResultSet rs = ps.executeQuery();

while (rs.next()) {

// Open the large object for reading

int oid = rs.getInt(1);

LargeObject obj = lobj.open(oid, LargeObjectManager.READ);

// Read the data

byte buf[] = new byte[obj.size()];

obj.read(buf, 0, obj.size());

// Do something with the data read here

// Close the object

obj.close();

}

rs.close();

ps.close();

以上是 使用Java在Postgresql中存储和检索图像 的全部内容, 来源链接: utcz.com/qa/400584.html

回到顶部