Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/374.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java中与oracle.sql.BLOB相当的PostgreSQL_Java_Sql_Oracle_Postgresql_Blob - Fatal编程技术网

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

Java中与oracle.sql.BLOB相当的PostgreSQL,java,sql,oracle,postgresql,blob,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 显然,它不起作用,因为cre

我使用
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连接

  • 使用Postgres连接实现这一点的等效方法是什么?我知道博士后的Blob相当于TEA。目标列是一个
    bytea
    列。我能做以下几件事吗?或者有没有一种合适的方法来达到同样的效果

    ps.setBytes(++i, someString.getBytes());
    
  • 另外,如何使Oracle特定的代码数据库独立于供应商?(避免使用
    oracle.sql.BLOB
    ,即使它是oracle连接)


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


    至于让您的代码独立于数据库,请停止使用特定于数据库的类。仅使用java.sql.*类就可以走很长的路。只有当您必须深入研究实际实现的驱动程序类时,这才应该是一个特例。

    谢谢您的评论。如果您也能为这里的问题提供一些答案,那就太好了。为什么要使用
    BLOB
    来存储
    字符串
    ?这更好地存储在
    CLOB
    (Postgres中的
    text
    )请参见我的答案:这里是独立于DBMS的solution@a_horse_with_no_name这不是我的密码。程序员在这个例子中使用它是有原因的。我们并不是对每根弦都这样做。谢谢你的链接。请问,
    setBinaryStream
    如何优于
    setBytes
    setBytes
    足够吗?根据我的经验,
    setBinaryStream()
    适用于所有JDBC驱动程序,而有些驱动程序不支持
    setBytes()
    。如果您确切地知道将使用哪些驱动程序,并且这些驱动程序也支持
    setBytes()
    ,那么它就没有问题。