[pgsql-jp: 41155] Re: 【ご質問】バイナリデータの扱いについて
MauMau
maumau307 @ gmail.com
2012年 7月 25日 (水) 20:23:03 JST
中本さん
MauMauといいます。
ご認識は正しいです。
bytea型の列を取り出すにはgetBytes()またはgetBinaryStream()をつかいます。
一方、ラージオブジェクトを取り出すにはgetBlob()、またはLargeObjectクラスのread()を使います。
このことはマニュアルの次のページに書かれています。
http://jdbc.postgresql.org/documentation/91/binary-data.html
ところで、自動コミットの件は解決されたでしょうか?
以上です。
----- Original Message -----
From: "Nakamoto, Hiroki" <nakamoto.hiroki @ jp.fujitsu.com>
To: <pgsql-jp @ ml.postgresql.jp>
Sent: Wednesday, July 25, 2012 5:36 PM
Subject: [pgsql-jp: 41154] 【ご質問】バイナリデータの扱いについて
中本と申します。
バイナリデータの扱いについて質問がございます。
昨日から立て続けで大変恐縮ですがよろしくお願い致します。
<質問内容>
・Oracle→Postgresへの移行に伴いバイナリデータ型がBlob→Byteaに変更。
上記に伴い、JavaアプリのResultSetオブジェクトのgetterメソッドの修正
は必要でしょうか?現行はgetBlobメソッドを使用。
修正を行わない場合、以下のPSQLEXceptionエラーとなる。
『PSQLException : 型 long :\xで不正な値』
Bytea型の場合、16進数の先頭に\xが付くため、型変換の際に失敗している。
<調査実績>
・ネット情報では、Bytea型を使用する場合は、getBytes()またはgetBinaryStream()
のみ使用可能。ラージオブジェクト機能を使用する場合は、Postgres SQL JDBCドライバ
で提供されるLarge Objectクラスの使用またはgetBLOB()が使用可能と記載がありました。
・実際にgetBinaryStream()に変更するとエラーになりませんでした。
<その他>
・Postgres Ver:PPAS9.1
・開発意言語:Java
調査実績をみると、Javaアプリの修正が必要と判断しましたが、認識は誤ってないでしょうか?
以上 よろしくお願い致します
pgsql-jp メーリングリストの案内