• 締切済み

JAVAでderbyに接続できない

java+eclipseでデータベースの勉強をしているのですが derbyの接続が上手くできません。 オラクル接続はできたのですが、今オラクルが使えない環境なので、derbyに接続したいのです。テーブルなどはプラグインで作成できているので、インストールは上手くできていると思います。接続用クラスと分けて作っているのですが、 呼び出す別クラスのsmt = con.createStatement();でエラーがでています。java.lang.NullPointerException 組み込み用ドライバで行っています。 接続用メソッドにしているサンプルはどこかにないでしょうか?探しているのですが。。基本的にオラクルとさほど 変更しなくても接続できるはずなのですが。。。 教えて下さい。お願いします。。

  • devid
  • お礼率34% (166/478)
  • Java
  • 回答数2
  • ありがとう数1

みんなの回答

  • tom11
  • ベストアンサー率53% (134/251)
回答No.2

こんにちは、 derby使うなら、ideにnetbeansを使っては、 プログラミングで、操作も出来ますが。 サービスで、derbyの起動、sqlの実行が容易に出来るし、 テーブルの作成も容易だし接続設定も容易ですよ。 データベースファイルも作るのが簡単です。 http://www.netbeans.org/kb/docs/ide/java-db_ja.html ちなみに、MySQLでも、接続は同様に容易ですし、 SQLサーバーでも、同様な操作で、利用できます。 プログラミングは、こちらを憶えてから、 やると、楽かも!!!!!!!!

devid
質問者

補足

ありがとうございます。使うかもしれません。 javaで接続ができないんです~。 なんでだー。orz

  • x_jouet_x
  • ベストアンサー率68% (162/236)
回答No.1

smt = con.createStatement(); でNullPointerExceptionということはConnectionオブジェクトが生成されていないと思います。 サンプルサイトは見つかりませんでしたが、以下の手順で組み込みではなく通常のやり方でDB作成およびプログラムを組んでみて下さい。 1. ijを起動して ij> connect 'jdbc:derby://localhost/[データベース名];create=true'; と入力してDBを作成。 2. JDBCドライバにClientDriverを使用するので、 Class.forName("org.apache.derby.jdbc.ClientDriver"); に変更します。 3. Connectionオブジェクトを取得するコード(例)を以下のように記述します。 ---------- public Connection getConnection() throws ClassNotFoundException, SQLException { String url = "jdbc:derby://localhost/[データベース名]"; Class.forName("org.apache.derby.jdbc.ClientDriver"); Connection conn = DriverManager.getConnection(url); return conn; } ---------- これでConnectionオブジェクトが取得できると思います。 ちなみに私もEmbeddedDriverを使って試してみたのですが、SQLExceptionが出てうまくいきませんでした。

devid
質問者

補足

コメントありがとうございます。 1. ijを起動して ij> connect 'jdbc:derby://localhost/[データベース名];create=true';と入力してDBを作成。 まずここで Connection refused: connect でエラーとでます。。 通常のconnect 'jdbc:derby:Sampleなどとすると作成されます。 えーderby難しいのかな~。Mysqlのほうがいいのかなー?? EmbeddedDriverならDBviewwerだと上手くいって追加更新削除もできて べんりなのですが、JAVAの接続ができない・・・

関連するQ&A

  • MySQLでJDBC接続をTomcatで接続できないです。。。。

    JDBC接続を現在勉強しています。 そこで、eclipseの中にTomcatをプラグインして、javaからデータベースに接続を心みているのですが、エラーが出て自分なりにいろいろ試したのですが、どうしてもエラーが消えません。 ご指摘いただけたらと思います。 エラー内容 java.lang.ClassNotFoundException: com.mysql.jdbc.Driver 環境内容 windows xp professional Eclipse 3.3 (C:\eclipse) Tomcat 5.5 (C:\eclipse\servers\tomcat-5.5) java (C:\Program Files\Java\jdk1.6.0_06) MySQL (D:\mysql-5.0.67-win32 データベースはDドライブにおいています) JDBCドライバー mysql-connector-java-5.1.6-bin.jar(C:\eclipse\servers\tomcat-5.5\common\libの配下に設定) PATHの設定 CLASSPATH C:\eclipse\servers\tomcat-5.5\common\lib javaのソースコード import java.sql.*; public class JdbcMySQLTest { public static void main(String[] args) { try { // ドライバクラスをロード Class.forName("com.mysql.jdbc.Driver"); // MySQLの場合 // データベースへ接続 String url = "jdbc:mysql:///hellodb?useUnicode=true&characterEncoding=SJIS"; Connection con = DriverManager.getConnection(url); // ステートメントオブジェクトを生成 Statement stmt = con.createStatement(); String sql = "SELECT * FROM HELLO_WORLD_TABLE"; // クエリーを実行して結果セットを取得 ResultSet rs = stmt.executeQuery(sql); // 検索された行数分ループ while (rs.next()) { // NOを取得 int no = rs.getInt("NO"); // 言語を取得 String lang = rs.getString("LANGUAGE"); // メッセージを取得 String msg = rs.getString("MESSAGE"); // 表示 System.out.println(no + " " + lang + " " + msg); } // データベースから切断 stmt.close(); con.close(); } catch (Exception e) { e.printStackTrace(); } } } 上記コードをEclipseから実行しますとコンソール上に java.lang.ClassNotFoundException: com.mysql.jdbc.Driver at java.net.URLClassLoader$1.run(URLClassLoader.java:200) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(URLClassLoader.java:188) at java.lang.ClassLoader.loadClass(ClassLoader.java:306) at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:276) at java.lang.ClassLoader.loadClass(ClassLoader.java:251) at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:319) at java.lang.Class.forName0(Native Method) at java.lang.Class.forName(Class.java:169) at jp.co.Beas.JdbcMySQLTest.main(JdbcMySQLTest.java:11) になってしまいます。 JdbcMySQLTest.java:11からcom.mysql.jdbc.Driverが ないですよ~といっているのは理解しているのですが そこでいろいろドライバーの配置などを変更したのですが エラーがやはりかわりません。 ながながとなって申し訳ございませんが、ご教授いただけたらと思います。

  • JAVAからORACLEへの接続について

    JAVAからORACLEへの接続について教えてください。 JAVAからORACLEデータベースに接続するには何が必要ですか? 自分としてはORACLEに標準でついているJDBCを使用すれば 接続できると思っているのですが... なにせ、JAVA、ORACLEの知識がほとんどないので宜しくお願いします。 ちなみに、何が必要というのは、お金のかかるものがいるかどうかです。 接続できる環境についてもなるべく詳しく知りたいと思っています。 宜しくお願い致します。

  • JavaからOracleへの接続が出来たり出来なかったり(改

    いつもお世話になっています。よろしくお願いします。 問題は、同じソースなのに、タイミングによって Oracleに接続出来たり、出来なかったりすることです。 まずは、問題のソースを短くまとめたものを書きたいと思います。 public class Sql private static Statement stmt; private static Connection conn; public static void main(String args[]) { Sql banana = new Sql banana(); banana.openOracle(); // Oracleへ接続するメソッドです。 ・ ・リャクサレテルワァ*:.。..。.:*・゜(n;‘∀)η(略 ・ banana.closeOracle(); // Oracleを切断するメソッドです。 } /** * Oracleへ接続するメソッドです。 */ private void openOracle() throws SQLException, ClassNotFoundException{ Class.forName("oracle.jdbc.driver.OracleDriver"); conn = DriverManager.getConnection("jdbc:oracle:oci8:@sampledb","user5","user5"); stmt = conn.createStatement(); } /** * Oracleを切断するメソッドです。 */ private void closeOracle() throws SQLException, ClassNotFoundException{ stmt.close(); conn.close(); } } 環境としては、 JDK5.0と、 Oracle9i(Client)をインストールしています。 インストールしてから今日まで1週間ですが、このような現象は 初めて起こりました。 JavaからOracleのデータベースを操作するようになって 3日目ですが、今日までうまく接続出来てきました。 処理をメソッドに分けてみたのは、今日が初めてです。 しかし、同じソースで接続できたりできなかったりする というのは、どういう現象なのでしょうか。 同じような現象を経験された方、 Oracle接続にお詳しい方、 どうか、ご教授よろしくお願いします。 プログラミングも、質問させていただくことも初心者ですので、 何か足りない情報などございましたら、ご指摘ください。 よろしくお願いします。

    • ベストアンサー
    • Java
  • javaでのORACLEへの接続

    javaでのORACLEへの接続方法を教えてください javaの初心者なのですが、JAVAでのORACLEへの接続方法がよくわかりません。 解説書のORACLEへの接続へのクラスファイルを実行してみましたがエラーとなって しまいます。(コンパイルは通ります)ちなみにクラスファイルの中身は... import java.sql.*; /* 省略 */ Class.forName("oracle.jdbc.driver.OracleDriver"); String url = "jdbc:oracle:thin:@hostname:1521:ORA817"; /* 省略 */ Connection conn = DriverManager.getConnection(url, user, password); /* 以下省略 */ この中でJDBCドライバのURLの@hostnameの部分にサーバーのIP(202.15....) ORA817の部分にデータベース名を入れ、ユーザ-、パスワードも実在するものにしてあります。Class.forNameの部分は変える必要があるのでしょうか?ファイルの場所は"C:\A116"です。ちなみにエラーメッセージは... C:\A116>java GetConnectionDemo java.lang.ClassNotFoundException: oracle.jdbc.driver.OracleDriver at java.net.URLClassLoader$1.run(Unknown Source) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(Unknown Source) at java.lang.ClassLoader.loadClass(Unknown Source) at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source) at java.lang.ClassLoader.loadClass(Unknown Source) at java.lang.ClassLoader.loadClassInternal(Unknown Source) at java.lang.Class.forName0(Native Method) at java.lang.Class.forName(Unknown Source) at GetConnectionDemo.main(GetConnectionDemo.java:6) ORACLEサーバ WINDOWS2000 ORACLE 8.1.6i です。 宜しくお願い致します。

    • ベストアンサー
    • Java
  • DBに接続しブラウザ上に検索結果が全て表示されるServlet

    首記の件ですが、コーティングしてコンパイルしても NullPointerExceptionがでてしまいます。 このServletはDB接続クラスと実行Servletにわかれていてます。 原因はDB接続クラスにレコードをカウントするメソッドが あるのですが、そこでNullPointerExceptionが発生して その他に影響を及ぼしているみたいです。 ・・・とまぁ、ここまで理解できたのですが行き詰まって しましましたのでご教授いただけると幸いです。 以下に問題のコードとエラー内容を記述します。 --接続クラス-- (略) private int count() throws SQLException { // 桁数 int rec = 0; // SQL文実行 rs = st.executeQuery("SELECT * FROM TESTTABLE1"); // カウント while(rs.next()) { rec++; } return rec; } } --エラーメッセージ-- java.lang.NullPointerException at DB.count(DB.java:146) at DB.select(DB.java:117) at SELECT.doGet(SELECT.java:73)

    • ベストアンサー
    • Java
  • java データベース接続

    javaの勉強していまして、質問があります。よろしくお願いします。 javaでデータベースの接続ができなくて迷っております。ずっとネットで調べてもダメでした。 ネットで調べたとおりにやっても、 例外発生:java.lang.ClassNotFoundException: sun.jdbc.odbc.JdbcOdbcDriver このようなエラーがでます。 eclipseを使ってます。windows7 練習にアクセスにつなごうと思ってます。 事前にデータソース(ODBC)の登録はしました。 ドライバーとかインストールするものなのでしょうか? package sample; import java.sql.Connection; import java.sql.DriverManager; public class Hello { public static void main(String args[]) { try { //JDBCドライバのロード Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); //各設定 String url = "jdbc:odbc:SampleDB030"; String user = ""; String pass = ""; //データベースに接続 Connection con = DriverManager.getConnection(url,user,pass); System.out.println("接続成功"); //データベースを切断 con.close(); } catch (Exception e) { System.out.println("例外発生:" + e ); } } }

    • ベストアンサー
    • Java
  • Oracle databaseのインストール

    Oracle database 12cをインストールしたところ、 EclipseのDBViewerから接続できない状況になっています。 Eclipseからプラグインを指定すると 「指定されたClasspathにはDriverクラスが存在しません。」 というエラーメッセージが表示されます。 そこで環境変数を確認した所、CLASSPATHにデータベースに関連 するクラスが見当たらないように思えます。 (Path変数にはデータベースの格納先が追加されているが、 CLASSPATH変数には"D\Program Files\Java"とだけ表示。) データベースのインストールはWebサイトを参考に行ったのですが、 特にエラーで止まったりする事はありませんでした。 参考にしたサイトには、手動で環境変数を変更するような記述は 無かったように記憶していますが、何が足りないのでしょうか。

  • データベースに接続できません

    データベースに接続できません java初心者です eclipseで開発を行っているのですが、どうもエラーがでてきて接続できません よろしくおねがいします エラー内容 Exception in thread "main" java.lang.NoClassDefFoundError: DataBase Caused by: java.lang.ClassNotFoundException: DataBase at java.net.URLClassLoader$1.run(URLClassLoader.java:200) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(URLClassLoader.java:188) at java.lang.ClassLoader.loadClass(ClassLoader.java:315) at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:330) at java.lang.ClassLoader.loadClass(ClassLoader.java:250) at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:398)

  • JavaとMySQLを接続できなくて困っています。

    MySQLで作成したデータベースをJavaを使って表示するというプログラムを作っているのですが、JDBCドライバがうまく機能せず、接続できません。初歩的な問題なのだとは思いますが、どなたか解決方法を教えてください。 import java.sql.*; public class Iwate1 { /** * @param args */ public static void main(String[] args) { // TODO 自動生成されたメソッド・スタブ try{ String drv = "com.mysql.jdbc.Driver"; String url = "jdbc:mysql:///iwate"; String usr = "----"; String pw = "-------"; Class.forName(drv).newInstance(); Connection cn = DriverManager.getConnection(url, usr, pw); Statement st = cn.createStatement(); String qry = "SELECT * FROM iwate_table"; ResultSet rs = st.executeQuery(qry); ResultSetMetaData rm = rs.getMetaData(); int cnum = rm.getColumnCount(); while(rs.next()){ for(int i=1; i<=cnum; i++){ System.out.print(rm.getColumnName(i)+":"+rs.getObject(i)+" "); } System.out.println(""); } rs.close(); st.close(); cn.close(); } catch(Exception e){ e.printStackTrace(); } } } 結果は java.lang.ClassNotFoundException: com.mysql.jdbc.Driver at java.net.URLClassLoader$1.run(URLClassLoader.java:200) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(URLClassLoader.java:188) at java.lang.ClassLoader.loadClass(ClassLoader.java:306) at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:276) at java.lang.ClassLoader.loadClass(ClassLoader.java:251) at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:319) at java.lang.Class.forName0(Native Method) at java.lang.Class.forName(Class.java:169) at Iwate1.main(Iwate1.java:17)

  • Javaです。

    以下のSQLのcustomerのc_idの最大値を求め、表示させたいのですが、上手くいかず、エラーが返ります。 Customerはデータベースに格納されています。 以下ソースです。 ・・・・・・・・・ String sql="select max(c_id) as max_c from customer"; Connection con = null; Statement smt = null; try { con = DBManager.getConnection(); smt = con.createStatement(); ResultSet rs = smt.executeQuery(sql); out.println(rs.getInt("max_c")); }catch(SQLException e){ throw new ServletException(e); }finally{ if(smt != null){ try{smt.close();}catch(SQLException ignore){} } if(con != null){ try{con.close();}catch(SQLException ignore){} } } ・・・・・・・ //恐らく、out.println(rs.getInt("max_c")); の表示クエリに問題があると思うのですが、どうすればいいか分からず質問しました。 具体的なソース等、解決策を教えて下さい。 Java素人です。 よろしくお願いします。

    • ベストアンサー
    • Java

専門家に質問してみよう