- PR -

StringをCLOB型の情報として戻したい

投稿者投稿内容
ねこのこ
会議室デビュー日: 2004/09/01
投稿数: 6
投稿日時: 2004-09-02 17:24
Odakazさん:
 確かに今見ると、nullで初期化してるんだから
java.lang.NullPointerException が発生するのは理解できます。
 でも何で初期化すればいいのか分からなかったんです・・・。
new を使おうとするとエラーがでるのでとりあえず(!)nullにしていました。
 DB接続せずにClobを使う場合、どのように宣言(初期化?)すればいいのでしょう?

koeさん:
 setCharacterStream()の使い方がまだよくわかっていないため、
 テストプログラムが作成できず、動作確認ができていません。
すみません。
Odakaz
ベテラン
会議室デビュー日: 2004/05/24
投稿数: 70
投稿日時: 2004-09-02 21:57
引用:

ねこのこさんの書き込み (2004-09-02 17:24) より:
new を使おうとするとエラーがでるのでとりあえず(!)nullにしていました。
 DB接続せずにClobを使う場合、どのように宣言(初期化?)すればいいのでしょう?



Clobはインタフェースなので、そのままnewはできませんね。
JDKのAPIドキュメントを見ると

引用:

ResultSet、CallableStatement、および PreparedStatement の各インタフェースのメソッド (getClob および setClob など) を使用すると、プログラマは SQL の CLOB 値にアクセスできます。



とあるので、PreparedStatementなら、setCharacterStreamでストリームを設定してDBに流し込むとか、ResultSetなら、getCharacterStreamでClobへのストリームを取得して、Clobの内容を取得するとか、そういう使い方になるんじゃないでしょうか。

追記:
今回はストアドプロシージャということなので、koeさんがおっしゃる通り、CallableStatementのインスタンスに対して、対象データに接続したストリームを設定してやればいけそうな気もします。


[ メッセージ編集済み 編集者: Odakaz 編集日時 2004-09-02 21:59 ]

[ メッセージ編集済み 編集者: Odakaz 編集日時 2004-09-02 22:07 ]
ねこのこ
会議室デビュー日: 2004/09/01
投稿数: 6
投稿日時: 2004-09-03 11:03
2004-09-02 14:10 の投稿で、
java.sql.Clobではなくoracle.sql.CLOBでの
CLOB情報の取扱いのソースを書かせて頂きましたが、

java.sql.Clobでも同様の処理の流れで
D/BにCLOB列を用意し、その列に対してSelectをかけて
ロケータを取得、そのロケータに対する
WriterやReaderを取得してClobデータを操作する・・・

というようになりそうです。

javaの中でConnectionを張りたくない(D/Bとは切り離したい)
ので、Clobを取り扱うのは諦めることにしました。

チャンク化してデータを取り扱うことにします。

皆様、有難うございました。

スキルアップ/キャリアアップ(JOB@IT)