これ何て呼びますか

Oracle9i R2にJDBCで接続してCUSTOMER表のレコード件数を調べる単純なJavaプログラムをつくろうとしています。

以下のソースをOracle端末上で実行すると「Exception in thread "main" java.lang.NoClassDefFoundError: CUSTOMER」というエラーメッセージが表示されます。

環境設定としてCLASSPATHにclasses12.zipのパスを通しました。

-------------------------------------------------
// JDBC APIのインポート
import java.sql.*;class CUSTOMER {
public static void main (String args[])
throws SQLException, ClassNotFoundException {

// JDBC Driverの登録
Class.forName("oracle.jdbc.driver.OracleDriver");

// Oracle9iに接続
Connection conn =
DriverManager.getConnection ("jdbc:oracle:thin@192.168.0.10:1521:testdb", "test", "test");

// ステートメントを作成
Statement stmt = conn.createStatement();

// 問い合わせの実行
ResultSet rset = stmt.executeQuery("SELECT COUNT(*) FROM CUSTOMER");

// 問い合わせ結果の表示
while ( rset.next() ) {
// 列番号による指定
System.out.println(rset.getInt(1) + "\t" + rset.getString(2));
}

// 結果セットをクローズ
rset.close();

// ステートメントをクローズ
stmt.close();

// 接続をクローズ
conn.close();
}
}
-------------------------------------------------
何かおわかりの方いらっしゃいましたら教えて下さい。宜しくお願いします。

A 回答 (8件)

thin@ではなくthin:@です。

    • good
    • 0
この回答へのお礼

potedoraさん有難うございました。
そうでした。

お礼日時:2004/08/09 15:22

>Connection conn =


>DriverManager.getConnection ("jdbc:oracle:thin@192.168.0.10:1521:testdb", "test", "test");
Exceptionのメッセージ通り、この部分がおかしいようです。
IPアドレス及びポート番号、SID、ユーザー、パスワードはあっていますか?

参考URL:http://www.techscore.com/tech/Java/JDBC/oracle-1 …
    • good
    • 0

三度,#3です.


ひとまずNoClassDefFoundErrorの問題はクリアでよかったですね.

ソースを見て気づいたことがあります.

SQL文ではで"SELECT COUNT(*) ..."としていますね.
そうすると,rset.getString(2)ではおかしなことになります.
整数値が入るフィールドから文字列を読み込めないからです.

SELECT * FROM CUSTOMER;
とすべきではないですか?

これがエラーの原因かどうか分かりませんが...
    • good
    • 0

#2です。



CUSTOMER.classがC:\WORKに存在している場合で

cd C:\WORK
java -classpath C:\WORK CUSTOMER

でやってみてください。
    • good
    • 0

#3です.お返事ありがとうございました.



Windows環境下ということですが,CLASSPATHの設定はマイコンピュータのプロパティの中にある「環境設定」で行われているんですよね?

憶測ですが,コマンドプロンプトで実行されているのではないかと思います.
もしもそうならば,環境設定の変更は一度コマンドプロンプトを終了しないと,反映されません.
試しに,SETと入力して見て下さい.
もしも変更が反映されていないならば,一度終了して再度実行してみて下さい.
    • good
    • 0
この回答へのお礼

lively-gonさん、ご回答有難うございました。
すみません、コマンドプロンプトを終了させずに実行しようとしておりました。
今、コマンドプロンプトを一度終了し、再度立ち上げて実行したところおっしゃるとおりエラーメッセージが変りました。

引き続き質問して恐縮ですが、無効なOracle URLとはどこの記述が悪いのでしょうか?
-------------------------------------------------
Exception in thread "main" java.sql.SQLException: 無効なOracle URLが指定されまし
た。
at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:134)
at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:179)
at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:269)
at oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:188)
at java.sql.DriverManager.getConnection(Unknown Source)
at java.sql.DriverManager.getConnection(Unknown Source)
at CUSTOMER.main(syn_cust.java:17)
-------------------------------------------------

お礼日時:2004/08/05 13:46

こんにちは



CLASSPATHの設定はどのようになっていますか?

CLASSPATH=x:\yyy\classes12.zip (Windowsの場合)
という感じですか?

もしもそうだったら
CLASSPATH=.;x:\yyy\classes12.zip
のように,ピリオドとセミコロンを最初に付けてみて下さい.
ピリオドはカレントディレクトリを示しています.
    • good
    • 0
この回答へのお礼

lively-gonさん、ご回答有難うございます。
本件はWindows環境です。ご指摘どおり「.;」を最初につけて試してみましたが、結果は同じになってしまいました。。

お礼日時:2004/08/05 13:01

CUSTOMER.classはできていますか?


実行しているカレントディレクトリに
CUSTOMER.classがありますか?

CUSTOMER.classがC:\WORKに存在している場合
cd C:\WORK
java CUSTOMER

として実行してみてください。
ソースに間違いがいくつかあるようですので
違うエラーが出ると思います。
    • good
    • 0
この回答へのお礼

potedoraさん、ご回答有難うございます。
CUSTOMER.classはカレントディレクトリ(F:\直下)にございます。javacコマンドでエラーなくコンパイルできました。しかし、java CUSTOMERを入力すると、このメッセージが出ます。
どうしてでしょうか

お礼日時:2004/08/05 12:08

CUSTOMERというクラスはないのだと思います。


JAVA何か1度も作ったことがないので間違っているとも老いますが・・・。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


おすすめ情報