0

私は次のコードを使用しています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

createTemporaryOracle接続が必要なため、明らかに機能しません。

  1. Postgres接続を使用してこれを達成する同等の方法は何ですか? Blobに相当する PostgresはByteAであることを理解しています。対象列はbytea列です。次のことだけできますか?または、同じ効果を達成する適切な方法はありますか?

    ps.setBytes(++i, someString.getBytes());
    
  2. また、Oracle 固有のコードを DB ベンダーに依存しないようにするにはどうすればよいですか? oracle.sql.BLOB( Oracle 接続であってもの使用を避ける)

4

1 に答える 1

1

使用する場合setBytes()(別の psql または非 psql 固有の blob メソッドがあったかどうかは思い出せません)、文字エンコーディングを に追加することを忘れないでくださいsomeString.getBytes()

コードを db に依存しないようにする場合は、db 固有のクラスの使用をやめてください。java.sql.* クラスだけで、長い道のりを歩むことができます。実際に実装されているドライバー クラスを掘り下げる必要がある場合にのみ、特別なケースにする必要があります。

于 2013-09-06T05:20:10.640 に答える