PostgreSQL相当于Java中的oracle.sql.BLOB

时间:2013-09-06 05:05:13

标签: java sql oracle postgresql blob

我使用oracle.sql.BLOB

获得以下代码
BLOB b = BLOB.createTemporary(conn, false, BLOB.DURATION_SESSION);
//conn is a PostgreSQL connection (java.sql.Connection object)
b.setBytes(1, someString.getBytes());
ps.setBlob(++i, b); //ps is a PreparedStatement

显然它不起作用,因为createTemporary需要Oracle连接。

  1. 使用Postgres连接实现此目的的等效方法是什么?我理解Postgres相当于 Blob ByteA 。目标列是bytea列。我可以这样做吗?还是有正确的方法来达到同样的效果?

    ps.setBytes(++i, someString.getBytes());
    
  2. 此外,如何使Oracle特定代码与数据库供应商无关? (即使是Oracle连接,也避免使用oracle.sql.BLOB

1 个答案:

答案 0 :(得分:1)

如果您确实使用setBytes()(我不记得是否还有其他psql或非psql特定的blob方法),请务必记住向someString.getBytes()添加字符编码。

至于使代码与数据库无关,请停止使用特定于db的类。只需java.sql。*类就可以走很长的路。当你必须挖掘实际的实现驱动程序类时,它应该只是一个特例。