429045 ランダム
 HOME | DIARY | PROFILE 【フォローする】 【ログイン】

ZIGENのプラグイン開発 for Eclipse

ZIGENのプラグイン開発 for Eclipse

【毎日開催】
15記事にいいね!で1ポイント
10秒滞在
いいね! --/--
おめでとうございます!
ミッションを達成しました。
※「ポイントを獲得する」ボタンを押すと広告が表示されます。
x
2005.12.11
XML
昨日のOracleのLong型データが取得できないという件ですが、
ようやく原因が分かりました!!

日本のサイトでは見つからなかったのですが、海外では
「Oracle Stream already closed. Long」で検索(by Google)していみると
以下の記事を見つけました。


Mailing list archives

この人曰く、OracleのJDBCDriverのバグだろう。ということです。

実際に、DBViewerPluginに色々とテストコードを入れて
試してみたところ、やっと問題の箇所が特定できました。


■問題の箇所
1.Long型のあるテーブルにSELECT文を発行する。
  rs = stmt.executeQuery(SELECT文)

2.while(rs.next()) する前に、使用中のConnectionのDatabaseMetaDataデータからPrimaryKey情報を取り出す
  DatabaseMetaData#getPrimaryKeysを検索する
  rs = objMet.getPrimaryKeys(null, schemaPattern, tableName);
  while (rs.next()) {
    TablePKColumn column = new TablePKColumn();
    column.setSep(rs.getInt("KEY_SEQ"));
    column.setColumnName(rs.getString("COLUMN_NAME"));
    column.setName(rs.getString("PK_NAME"));
    list.add(column);
  }
  ※補足:ここでのrsと「1.」にあるrsは別のオブジェクトです

3.PrimaryKeyを取得した後に、「1」で検索した結果をwhile(rs.next()) すると
「ストリームはすでにクローズ済です。」というSQLExceptionが発生する


■問題回避方法
その1:getPrimaryKeysを取得するときのConnectionは別にする
その2:executeQueryを発行する前に、getPrimaryKeysを実行する


Connectionは極力使いまわした方が、レスポンスが良いため、
その2の方法で対応したいと思います。

■補足情報
Long型のデータに対して2回以上getString()などを発行しても
同じExceptionが発生することがわかりました。







お気に入りの記事を「いいね!」で応援しよう

Last updated  2005.12.11 16:19:47
コメント(0) | コメントを書く
[プラグイン障害・課題・制限] カテゴリの最新記事


PR

Calendar

Comments

名前なし@ Re:テーブルのデータをエクセル風に編集できない?(03/27) ExcelでOracle,MySQLのデータを取得/更新…
ZIGEN@ Re:いつも使ってます!!(04/14) ヘタグラマさん こんにちは^^ コメ…
ヘタグラマ@ いつも使ってます!! いつも便利に使ってます。 もう手放せな…
★みゆきち★@ 性感エステってもったいないよね ムラムラってきたら性感エステに通ってた…
ZIGEN_M@ Re[2]:4000行はないけれど、(03/13) こんにちは、ZIGENです。 そ、そうです…

Category

Freepage List

Favorite Blog

松のページブログ 松-booleanさん

Profile

ZIGEN_M

ZIGEN_M


© Rakuten Group, Inc.