このページで解決しない高度なJavaのシステム障害はJaTSにお任せください

Trouble 9: DBに接続できません



<Q9-1>同じConnectionから、Statementを使用したSQL文の発行はネストして行えません。

例えば、SQLの結果をResultSetで取り出す際、通常はwhileループを使用して取り出すが、その中で新たに同じConnectionを使用して別のSQL文を発行しようとするとSQLExceptionが発生してしまいます。

<発生環境>
OS Solaris
JDK JDK1.3
Vender Sun
<A9-1>
このような場合は、一度ResultSetから結果を全て取り出してList等に保存しておき、そこから新たにループを作るなどしてResultSetループのネストを解消してください。
また、どうしてもネストを解消できない場合は別のConnectionを使用する方法も考えられます(この方法は未確認です)。
Page Top

<Q9-2>「SELECT * FROM テーブル名」を利用して取得したResultSetを更新する事ができません。


<発生環境>
OS WindowsNT 4.0
JDK JDK1.3.1_02
Vender Sun
DB Oracle8 Enterprise Edition Release 8.0.5.2.1
JDBC Driver Oracle JDBC Driver 8.1.6.0.1
<A9-2>
Oracle JDBC Driver V8.1.6 / V8.1.7の制限事項により、「SELECT * FROM テーブル名」で取得したResultSetは更新可能ResultSetではありません。更新可能ResultSetを取得するには、「SELECT テーブル名.* FROM テーブル名」というように表の別名を利用してください。

また、このドライバには、上記問題を含めて以下のような制限事項があります。
 (1) 問合せによって選択できるのは、単一の表のみです。
 (2) 問合せでは「SELECT *」を使用できません。
 (3) 問合せで選択できるのは、表列のみです。
 (4) 問合せでは「ORDER BY」を使用できません。
詳しくはOracleの「JDBC 開発者ガイドおよびリファレンス」を参照してください。
Page Top

<Q9-3>ResultSetMetaData.getTableName()でテーブル名を取得することができません。


<発生環境>
OS WindowsNT 4.0
JDK JDK1.3.1_02
Vender Sun
DB Oracle8 Enterprise Edition Release 8.0.5.2.1
JDBC Driver Oracle JDBC Driver 8.1.6.0.1
<A9-3>
Oracleの「JDBC 開発者ガイドおよびリファレンス」によると、ResultSetMetaDataインターフェースのgetSchemaName()メソッドとgetTableName()メソッドは実装されていません。
この環境で実際に実行すると、空文字列が返却されます。
Page Top

注意:本文書の内容に誤りがあり、またこの文書によって不利益を被っても、
Acroquest Technology 株式会社は一切関知いたしません。

  • 現象別Index
  • 原因別Index

Find Bugsバグ詳細

Find Bugs Bug Descriptions日本語版

RSSで更新情報を取得する

RSSとは、ホームページの更新情報を配信する為のフォーマットです。
RSSを利用すると、登録したページの情報が更新された場合に、更新情報を自動的に受け取る事ができます。

詳細

弊社小森が執筆致しました

Javaでオブジェクト指向開発

Javaプログラミング言語習得において、新人プログラマーの最初の障害は「オブジェクト指向の壁」です。
本書は、Javaのソフトウェア開発を中心に事業を発展させてきたAcroquest社の新人教育セミナーを加筆・書籍化したもので、大卒の新人に対して、ゼロからJava言語を教えてきた実績をフィードバックしています。

メールマガジン配信中

Javaトラブルシューティングのメルマガをはじめました!是非ご購読ください

詳細