• 締切済み

DBサーバ上でjdbcによるアクセス方法について

Oracle JDBC Driverのロードを以下のように行おうとしました。 import java.sql.*; class JavaDataAccess01 { public static void main (String args[]) throws SQLException, ClassNotFoundException { // Oracle JDBC Driverのロード Class.forName("oracle.jdbc.driver.OracleDriver"); // Oracle10gに接続 Connection conn = DriverManager.getConnection ("jdbc:oracle:thin:@localhost:1521:ORCL", "test", "test"); // ステートメントを作成 Statement stmt = conn.createStatement(); // 問合せの実行 ResultSet rset = stmt.executeQuery("select brand_id,value from brand"); // 問合せ結果の表示 while ( rset.next() ) { // 列番号による指定 System.out.println(rset.getInt(1) + "\t" + rset.getString(2)); } // 結果セットをクローズ rset.close(); // ステートメントをクローズ stmt.close(); // 接続をクローズ conn.close(); } } コンパイル後実行すると以下のように例外がでます。 Exception in thread "main" java.lang.ClassNotFoundException: oracle.jdbc.driver. OracleDriver at java.net.URLClassLoader$1.run(URLClassLoader.java:199) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(URLClassLoader.java:187) at java.lang.ClassLoader.loadClass(ClassLoader.java:289) at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:274) at java.lang.ClassLoader.loadClass(ClassLoader.java:235) at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:302) at java.lang.Class.forName0(Native Method) at java.lang.Class.forName(Class.java:141) at JavaDataAccess01.main(JavaDataAccess01.java:11) ちなみにコンパイルして作成したクラスファイルはJavaDataAccess01です。使用しているDBはoracle10gです。環境設定もCLASSPATHにD:\oracle\product\10.2.0\db_1\jdbc\lib\classes12.zipを追加しているのですがどうにもうまくいきません。どなたか解決方法がわかる方、ご教授お願いします。

みんなの回答

  • fortranxp
  • ベストアンサー率26% (181/684)
回答No.5

いまのところ釈然とはしませんが jarファイルを関連付ける場合で うまくいかないときは コマンドプロンプトで SET CLASSPATH=D:\oracle\product\10.2.0\db_1\jdbc\lib\ojdbc14.jar;. (最後にセミコロンとドットをつける) のようにして見ることで確認できると 思います。

  • kztk
  • ベストアンサー率53% (59/110)
回答No.4

・カレントディレクトリにJarファイルを置いて.にクラスパスを通しても、Jarファイルは見てくれません。Jarファイルにクラスパスを通す場合はそのJarファイルのパスを指定しましょう。 ・CLASSPATH環境変数をセットしても、実行時に-classpathを指定しているとCLASSPATHの内容は無視されます。JARファイルをカレントディレクトリに置く前のコマンドはどうでしたか? ・そもそも環境変数CLASSPATHを使う方法は望ましくありません。 http://java.sun.com/j2se/1.3/ja/docs/ja/tooldocs/solaris/classpath.html

3java
質問者

お礼

有難うございました。何とか解決しました。classパスが一度dosを終了しないと反映されない事をわすれてました。以上を踏まえていろいろな人のアドバイスをもとに勉強します。有難うございました。

  • fortranxp
  • ベストアンサー率26% (181/684)
回答No.3
  • fortranxp
  • ベストアンサー率26% (181/684)
回答No.2

D:\oracle\product\10.2.0\db_1\jdbc\lib\ojdbc14.jar だと思う。 14はV1.4 12はV1.2

  • fortranxp
  • ベストアンサー率26% (181/684)
回答No.1

ORACLEXE10gを使ってますが 微妙に少し異なっていると 思います。私の場合は C:\OracleXE\app\oracle\product\10.2.0\server\jdbc\lib\ojdbc14.jar ですから zip>jarなど 再確認してください。

3java
質問者

補足

私の環境ではoracle\product\10.2.0\db_1\jdbc\libに以下情報が格納されています。 classes12.jar classes12.zip classes12dms.jar nls_charset12.jar ojdbc14.jar ojdbc14_g.jar ojdbc14dms.jar ojdbc14dms_g.jar ちなみに同カレントに上記ファイルを一式コピーして以下コマンド C:\>java -classpath . JavaDataAccess01で実行しても java.lang.ClassNotFoundExceptionが発生します。 初心者で申し訳ないです。ほかに心当たりがありませんでしょうか? ちなみにJAVA -VERSIONはjava version "1.4.2_14"です。

関連するQ&A

専門家に質問してみよう