- PR -

件名:MySQLとJDBCがうまく接続できません。

投稿者投稿内容
dora
会議室デビュー日: 2005/06/20
投稿数: 7
投稿日時: 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は必要ないですよね?

よろしくお願いします。。。
masa
大ベテラン
会議室デビュー日: 2005/05/11
投稿数: 108
投稿日時: 2005-06-21 13:49
引用:

doraさんの書き込み (2005-06-21 13:34) より:

C:>java -classpath ./ JdbcSample
Exception: com.mysql.jdbc.Driver

このようなエラーになってしまいます。



このメッセージは

引用:

} catch (Exception e2) {
System.out.println(
"Exception: " + e2.getMessage());
}



この部分が出力しているメッセージです。
getMessage()だけでは、詳細なログを吐いてくれませんので、
以下の一文を追加して、原因を探ってみてください。

} catch (Exception e2) {
System.out.println(
"Exception: " + e2.getMessage());
e.printStackTrace(); //ここを追加
}
uk
ぬし
会議室デビュー日: 2003/05/20
投稿数: 1155
お住まい・勤務地: 東京都
投稿日時: 2005-06-21 14:15
-classpathオプションをつけて実行した場合は環境変数CLASSPATHは無視されます。
.を環境変数CLASSPATHに追加して-classpathオプションなしで実行するか、MySQLのドライバ
へのパスも-classpathオプションで指定して実行してみてください。
dora
会議室デビュー日: 2005/06/20
投稿数: 7
投稿日時: 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になっているようなのですが・・・。

今川 美保(夏椰)
ぬし
会議室デビュー日: 2004/06/10
投稿数: 363
お住まい・勤務地: 神奈川県茅ヶ崎市
投稿日時: 2005-06-21 15:25
引用:

doraさんの書き込み (2005-06-21 15:05) より:
SQLException: Invalid authorization specification message from server: "・譯シ・カ。シ 'xxxxx@localhost' 、魑馮ン、キ、゙、ケ.(Using password: YES)"
SQLState: 28000
VendorError: 1045



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へ指定した接続でつながるかを確認してみては?
dora
会議室デビュー日: 2005/06/20
投稿数: 7
投稿日時: 2005-06-22 10:46
かやさん、ありがとうございます。

そのようなエラーなんですね。

ところで、
>MySQLへ指定した接続でつながるかを確認
の意味がよく分からないのですが・・・

初心者なんで申し訳ありません
今川 美保(夏椰)
ぬし
会議室デビュー日: 2004/06/10
投稿数: 363
お住まい・勤務地: 神奈川県茅ヶ崎市
投稿日時: 2005-06-22 10:53
引用:

doraさんの書き込み (2005-06-22 10:46) より:
>MySQLへ指定した接続でつながるかを確認
の意味がよく分からないのですが・・・


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 ]
dora
会議室デビュー日: 2005/06/20
投稿数: 7
投稿日時: 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をインストールし直した方がよろしいのでしょうか?


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