- PR -

JDBCエラーが出ます

投稿者投稿内容
MIDOU
会議室デビュー日: 2004/10/14
投稿数: 13
投稿日時: 2004-10-14 01:22
はじめまして。
初心者の御堂と申します。

諸先生方、是非お力をお貸しください!
いまOracle ⇔ javaを勉強中です。
書籍に付属していたトライアル版Oracle8iをインストールし、
下記の環境でやみくもに学習中です。

【環境】
OS:win98
JAVA:1.4.2
DB:Oracle8i Personal Edition for Win98 (120日トライアル版)
CLASSPATH:.;C:\Oracle\Ora81\jdbc\lib\classes12.zip; ***

このたびは、諸先生がたに是非ご教授いただきいことがあります。
それは、下記のように、Oracleへの接続にエラーが出てしまいます。
様々な文献をあさり、策を講じてみたんですが、
一向に解決いたしません。
このような基礎的な内容で大変恐縮ですが是非よろしくお願いいたします。
コード:

import java.sql.*;

public class JDBCTest{
public static void main(String[] args)throws SQLException{

try{
Class.forName("oracle.jdbc.driver.OracleDriver");
}catch(ClassNotFoundException e){
System.out.println(e + "という例外が発生しました");
}

Connection conn = DriverManager.getConnection
("jdbc:oracle:thin:@localhost:1521:ORCL","se","se");

Statement stmt = conn.createStatement();
ResultSet rset = stmt.executeQuery("select ID,名前 from 社員表");

while(rset.next()){
System.out.println(rset.getString(1));
System.out.println(",");
System.out.println(rset.getString(2));
}

rset.close();
stmt.close();

conn.close();
}
}




【エラー】
2004/10/14 0:54:05 java.util.jar.Attributes read
警告: Duplicate name in Manifest: Class-Path
Exception in thread "main" java.sql.SQLException: I/O例外です。
  : The Network Adapter could not establish the connection
at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:114)
at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:156)
at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:269)
at oracle.jdbc.driver.OracleConnection.<init>(OracleConnection.java:210)

at oracle.jdbc.driver.OracleDriver.getConnectionInstance(OracleDriver.java:251)
at oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:224)
at java.sql.DriverManager.getConnection(DriverManager.java:512)
at java.sql.DriverManager.getConnection(DriverManager.java:171)
at JDBC.main(JDBC.java:15)

どうかお力をお借しください。
よろしくお願いいたします。


[ メッセージ編集済み 編集者: MIDOU 編集日時 2004-10-14 01:24 ]

[ メッセージ編集済み 編集者: MIDOU 編集日時 2004-10-14 01:25 ]
山本 裕介
ぬし
会議室デビュー日: 2003/05/22
投稿数: 2415
お住まい・勤務地: 恵比寿
投稿日時: 2004-10-14 09:58
Oracleは起動していますか?netstat -an などで 1521 でリスンしているか確認してみましょう。
いっきゅう
大ベテラン
会議室デビュー日: 2004/04/04
投稿数: 153
お住まい・勤務地: 兵庫
投稿日時: 2004-10-14 10:12
Oracleをインストールするとパスの設定を追加されることがあります。
実行時のJavaのバージョンを確認してみてはどうですか?
後、実行時のコマンドを公開していただけるとコメントしやすいです。

開発環境使っている場合は話しが変わりますが、
使っていないと判断して回答しました。
MIDOU
会議室デビュー日: 2004/10/14
投稿数: 13
投稿日時: 2004-10-15 00:56
インギさん!
いっきゅうさん!
貴重なアドバイス本当にありがとうございます。
お二方のアドバイスを参考にさせていただき、
実行してみました。
どうも、改善されない様子です。


インギさんへ。
>Oracleは起動していますか?
間違いなくOracleが起動していることを確認しました。

 >netstat -an などで 1521 でリスン・・・
ご指示いただいたとおり、
netstat -anでリスンを確認してみました。結果は↓
コード:

TCP 192.168.0.2:139 0.0.0.0:0 LISTENING
TCP 127.0.0.1:1029 0.0.0.0:0 LISTENING
TCP 192.168.0.2:1371 192.168.0.2:1521 SYN_SENT
UDP 192.168.0.2:138 *:*


と、ポート1521へ向けて、SYN_SENTを出しては、いるようです。
しかし、ACKが返ってきてないのか、
再度netstat -anを実行すると、次はもう消えてます。
しかもSYN_SENTは、10回中1回くらいの割合でしか出現しません。。
いわゆる、これはちゃんと通信できてないという結果でしょうか??

いっきゅうさん。
 >Oracleをインストールするとパスの設定を追加されることがあります。

確かに、知らずにjava1.1.7が別ディレクトリにインストールされていました。
さらにこのPathも書き込まれていたので、
remとしてコメントアウトしました。
その後、javaのバージョンを確認してみましたら、
本来の1.4.2になっています。

>実行時のコマンドを公開していただけるとコメントしやすいです
すみません。お恥ずかしい話なんですが、
実行時のコマンドというのは、"java JDBC" とか
そういう実行コマンドのことでしょうか?
すみません。それでしたら、コマンドラインから"java JDBC"として、
実行していますです。

 >開発環境使っている場合は話しが変わりますが
おっしゃるとおり、開発環境は使用していません。

[ メッセージ編集済み 編集者: MIDOU 編集日時 2004-10-15 00:58 ]

[ メッセージ編集済み 編集者: MIDOU 編集日時 2004-10-15 01:00 ]

[ メッセージ編集済み 編集者: MIDOU 編集日時 2004-10-15 01:01 ]
もしもし
ぬし
会議室デビュー日: 2004/10/15
投稿数: 280
投稿日時: 2004-10-15 10:55
はじめまして。もしもしと申します。以降よろしゅうに。

---------------------------------------------------------
JAVA:1.4.2
CLASSPATH:.;C:\Oracle\Ora81\jdbc\lib\classes12.zip; ***
---------------------------------------------------------

そもそも JDK1.4 に対応している JDBC ドライバは Oracle9.2 以降の
ojdbc14.jar なんですが、classes12.zip は多分 JDK1.2/1.3 あたり
しか対応していないはずです。

まずは JDK を変えてみてはいかがかな、と。


> 確かに、知らずにjava1.1.7が別ディレクトリにインストールされていました。
> さらにこのPathも書き込まれていたので、
> remとしてコメントアウトしました。

これ、おそらく 8.1.7 の OEM が使用する JDK だと思います。
(コメントアウトすると OEM が起動しないかも)


[ メッセージ編集済み 編集者: もしもし 編集日時 2004-10-15 11:14 ]
山本 裕介
ぬし
会議室デビュー日: 2003/05/22
投稿数: 2415
お住まい・勤務地: 恵比寿
投稿日時: 2004-10-15 11:44
サーバ起動していてもリスナが起動していないのではないでしょうか?
ポート1521でリスンしてませんよね?
>Exception in thread "main" java.sql.SQLException: I/O例外です。
>  : The Network Adapter could not establish the connection
この例外もそれをほのめかしています。
SJ0392
ベテラン
会議室デビュー日: 2004/02/05
投稿数: 62
お住まい・勤務地: 神奈川・横浜
投稿日時: 2004-10-15 12:14
引用:

MIDOUさんの書き込み (2004-10-15 00:56) より:
 >netstat -an などで 1521 でリスン・・・
ご指示いただいたとおり、
netstat -anでリスンを確認してみました。結果は↓
コード:

TCP 192.168.0.2:139 0.0.0.0:0 LISTENING
TCP 127.0.0.1:1029 0.0.0.0:0 LISTENING
TCP 192.168.0.2:1371 192.168.0.2:1521 SYN_SENT
UDP 192.168.0.2:138 *:*


と、ポート1521へ向けて、SYN_SENTを出しては、いるようです。



接続用のURLが "jdbc:oracle:thin:@localhost:1521:ORCL"ということなので、
コード:

TCP 192.168.0.2:1521 0.0.0.0:0 LISTENING


を確認して下さいということです。

[ メッセージ編集済み 編集者: SJ0392 編集日時 2004-10-15 12:16 ]
MIDOU
会議室デビュー日: 2004/10/14
投稿数: 13
投稿日時: 2004-10-16 01:09
もしもしさん、
インギさん、
SJ0392さん、
ありがとうございます。

もしもしさん。
なるほど、そうだったんですか!
Oracle8iは、JDK1.4で対応しきれていないんですね。。
では、おっしゃるように一度JDKを1.2とかに下げて
再チャレンジしてみる必要ありですね。

インギさん。
おっしゃるとおり、リスンしていませんでした。
今回のことで、こうやって調べる方法を学んだのが、
何よりの収穫です。

SJ0392さん。
ずばり、1521でLISTENING表示を見ることはありませんでした。
通信ができてないことが完全に理解できました。
ありがとうございます。




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