[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 メーリングリストの案内