- - PR -
Oracle8i + JDBCでのlong型の取り扱いで例外発生
1
| 投稿者 | 投稿内容 | ||||
|---|---|---|---|---|---|
|
投稿日時: 2003-09-09 16:44
いつもお世話になっております。
Oracle8i + JDBC(Oracle Thinドライバ)でSQLのselect文を実行すると DBの型がlong型のカラムでのみResultSetのgetCharacterStreamで 「SQL.Exception===ストリームはすでにクローズ済です。」というSQLExceptionが発生してしまいます。 それも入っているデータが同じでも毎回出るのではなく、 時によって出たり出なかったりします。 その再現のタイミングもまだつかめていません。 下記コードのgetCharacterStreamをgetStringに変えてみても やはり同じエラーが出てきてしまいます。 どなたか原因の心当たりはございませんでしょうか。 J2SDKのバージョンは1.3.1_06です。
よろしくお願いします。 | ||||
|
投稿日時: 2004-07-22 11:41
当方ではStatementをFORWARD_ONLYから変更したら解消しました。
| ||||
|
投稿日時: 2004-07-22 15:49
Oracleに関してはここよりも下記の掲示板の方が回答を得やすいと思います。
http://otn.oracle.co.jp/forum/index.html 全然分かりませんが、私なら ・最新のJDBC Thinドライバーを使ってみる。 (DBサーバが8iでも JDBC Driver 9.x とか 10.x を利用可能です。) できれば保守契約して入手できる最新のものを使うことをお勧めします。 ・OCIのドライバーを使ってみる。 (こちらはOracle Clientが必要なので簡単に最新のものを試せませんが。) | ||||
|
投稿日時: 2004-07-22 17:17
確か、Oracle8iのJDBCドライバは、LOBの扱いが独自実装です。
まずLOBロケータを取得する。次いで、ストリームを取得しなけ ければいけなかったと思います。 : oracle.sql.CLOB oclob = (oracle.sql.CLOB)rset.getObject(i); InputStream is = oclob.getCharacterStream(); : | ||||
1
