- - PR -
件名:MySQLとJDBCがうまく接続できません。
| 投稿者 | 投稿内容 | ||||||||
|---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2005-06-21 13:34
MySQL を起動して、 JDBC API からアクセスしたいのですが、エラーが出てしまいます。
環境 os:windows2000 J2SE SDK:jdk1.5.0_02 データベース:MySQL (バージョン4.0.24-win) JDBCドライバ:mysql-connector-java-3.0.16-ga システム環境変数 PATHにC:\mysql\bin追加済み CLASSPATHにC:\mysql-connector-java-3.0.16-ga\mysql-connector-java-3.0.16-ga\mysql-connector-java-3.0.16-ga-bin.ja追加済み(set classpathで確認済み) C:\mysql\bin\>mysql test の中にaddrbookというデータを登録しています。 また、プログラムは以下の通りです。 import java.sql.*; class JdbcSample { public static void main(String[] args) { try { // 1.JDBC Driver の登録 Class.forName("com.mysql.jdbc.Driver").newInstance(); // 2.データベースへの接続 Connection con = DriverManager.getConnection( "jdbc:mysql://localhost/test", "xxxxx", "xxxxx"); // 3.SQL ステートメント・オブジェクトの作成 Statement stmt = con.createStatement(); // 4.SQL ステートメントの発行 ResultSet rs = stmt.executeQuery("SELECT * from addrbook"); // 5.結果の出力 while (rs.next()) { System.out.println(rs.getString("name")); } // 6.データベースのクローズ rs.close(); stmt.close(); con.close(); } catch (SQLException e1) { System.out.println( "SQLException: " + e1.getMessage()); System.out.println( " SQLState: " + e1.getSQLState()); System.out.println( " VendorError: " + e1.getErrorCode()); } catch (Exception e2) { System.out.println( "Exception: " + e2.getMessage()); } } } コンパイルは通るのですが、 C:\>java JdbcSample Exception in thread "main" java.lang.NoClassDefFoundError: Jdbcsample または C:\>java -classpath ./ JdbcSample Exception: com.mysql.jdbc.Driver このようなエラーになってしまいます。 どこがおかしいのでしょうか? Tomcatは必要ないですよね? よろしくお願いします。。。 | ||||||||
|
投稿日時: 2005-06-21 13:49
このメッセージは
この部分が出力しているメッセージです。 getMessage()だけでは、詳細なログを吐いてくれませんので、 以下の一文を追加して、原因を探ってみてください。 } catch (Exception e2) { System.out.println( "Exception: " + e2.getMessage()); e.printStackTrace(); //ここを追加 } | ||||||||
|
投稿日時: 2005-06-21 14:15
-classpathオプションをつけて実行した場合は環境変数CLASSPATHは無視されます。
.を環境変数CLASSPATHに追加して-classpathオプションなしで実行するか、MySQLのドライバ へのパスも-classpathオプションで指定して実行してみてください。 | ||||||||
|
投稿日時: 2005-06-21 15:05
masaさん、ukさん、ありがとうございます。
お二人の意見を参考に実行してみたところ、 SQLException: Invalid authorization specification message from server: "・譯シ・カ。シ 'xxxxx@localhost' 、魑馮ン、キ、゙、ケ.(Using password: YES)" SQLState: 28000 VendorError: 1045 というサーバからの無効の承認仕様メッセージが出てきました・・・。 コンパイルは通ります。 また、classpathですが、環境変数のclasspathに.を追加しました。 文字化けの直し方が分からなくてエラーメッセージの内容が読めません(><) プロパティを見るとShift-JISになっているようなのですが・・・。 | ||||||||
|
投稿日時: 2005-06-21 15:25
MySQLでSQLStateが28000はDBへの接続が拒否されたってことでは? http://dev.mysql.com/doc/mysql/en/error-handling.html より Error: 1045 SQLSTATE: 28000 (ER_ACCESS_DENIED_ERROR) Message: Access denied for user '%s'@'%s' (using password: %s) ↑多分これの日本語版が表示されていそうな気がします。 なので、まずはMySQLへ指定した接続でつながるかを確認してみては? | ||||||||
|
投稿日時: 2005-06-22 10:46
かやさん、ありがとうございます。
そのようなエラーなんですね。 ところで、 >MySQLへ指定した接続でつながるかを確認 の意味がよく分からないのですが・・・ 初心者なんで申し訳ありません | ||||||||
|
投稿日時: 2005-06-22 10:53
http://www.bitscope.co.jp/tep/MySQL/quickMySQL.html#id_102 を参考にして、JDBCの接続に指定したMySQLへ 接続確立できるか確認してください。 (「MySQLサーバに接続する」って部分が該当すると思います。) アクセス拒否されているんで、 http://www.rfs.jp/server/mysql/ http://www.rfs.jp/server/mysql/02/04.html を参考にして接続の認証も確認したほうが良いかと思います。 [ メッセージ編集済み 編集者: 夏椰(かや) 編集日時 2005-06-22 10:53 ] | ||||||||
|
投稿日時: 2005-06-22 11:33
かやさん、ありがとうございます。
今、教えていただいた http://www.bitscope.co.jp/tep/MySQL/quickMySQL.html#id_102 を参考にして、JDBCの接続に指定したMySQLへ 接続確立できるか確認したところ、 パスワードを入力後、 ERROR 1045: ・譯シ・カ。シ 'xxxxx@localhost' 、魑馮ン、キ、゙、ケ.(Using password: YES) というエラーメッセージが出ました。 接続できてないみたいです(><) もう一度MySQLをインストールし直した方がよろしいのでしょうか? | ||||||||
