- PR -

MySQLについて教えてください。

投稿者投稿内容
未記入
ベテラン
会議室デビュー日: 2004/08/18
投稿数: 80
投稿日時: 2004-08-26 14:46
質問があります。

今、MySQLに挑戦しているのですが、JavaのアプリケーションからMySQLのデータベースへ接続するためにJDBCドライバのダウンロードして、CLASSPATHへの追加をして、Javaソースコードを作ったのですが、エラーが出てしまいました。

Webで検索して、いろいろと試してみて、エラーが減ったのですが、残りの4行のエラーがわかりません。
教えていただけないでしょうか。

CLASSPATHは、
C:\mysql-connector-java-3.0.14-production\mysql-connector-java-3.0.14-production-bin.jar
です。

No suitable driverとあるので、
Class.forName("org.gjt.mm.mysql.Driver");
に対してのエラーだと思い、CLASSPATHがおかしいのではと考え、・・・Webを見ながら変えてみたのですが、できませんでした。

--------------ここから-------------------------------------------
java.sql.SQLException: No suitable driver
at java.sql.DriverManager.getConnection(Unknown Source)
at java.sql.DriverManager.getConnection(Unknown Source)
at HelloWorldJDBCMySQL.main(HelloWorldJDBCMySQL.java:15)

-------------ここまでが表示されたエラーです。------------------------

Javaソースコードは
--------------ここから-------------------------------------------
import java.sql.*;

public class HelloWorldJDBCMySQL {
public static void main(String[] args) {
try {
// ドライバクラスをロード
// Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); // ODBCの場合
Class.forName("org.gjt.mm.mysql.Driver"); // MySQLの場合

// データベースへ接続
// Connection con =
// DriverManager.getConnection("jdbc:odbc:helloworld"); // ODBCの場合
// 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();
}
}
}
-------------ここまでです。----------------------------------------

MySQLはWindows (x86)のmysql-4.0.20d-winです。
JDBCドライバは、MySQL Connector/J 3.0.14 をダウンロードしました。
Source and Binaries (zip)の3.0.14-production

javaはj2sdk1.4.2_05です。

ご教授お願いいたします。
あゆかわ
会議室デビュー日: 2004/01/30
投稿数: 7
投稿日時: 2004-08-26 15:10
Class.forName("com.mysql.jdbc.Driver");

にしてみたらどうですか?

自分の場合はマニュアルを読んだら、この方法しか見つからなくてこう書いたところ、うまくいきました。

昔どっかの記事で
Class.forName("org.gjt.mm.mysql.Driver");
というのも見たことありますが、自分のとこでも動かなかったうえに、なにがどうちがうかわかりません。

とりあえずClass.forName("com.mysql.jdbc.Driver");で自分の手元のプログラムはうまく動いているので。
_________________
-----------------------------------------
Fedoraに乗り換えました。
http://www.lyricfathom.com/mt/linux/
あゆかわ
会議室デビュー日: 2004/01/30
投稿数: 7
投稿日時: 2004-08-26 15:26
気になったのでorg.gjt.mm.mysql.Driverのソースを開いてみました。
昔バージョンとの互換性のために残してあるだけのようですね。

-----------------------------------------------
package org.gjt.mm.mysql;

import java.sql.SQLException;


/**
* Here for backwards compatibility with MM.MySQL
*
* @author Mark Matthews
*/
public class Driver
extends com.mysql.jdbc.Driver {

/**
* Creates a new instance of Driver
*
* @throws SQLException if a database error occurs.
*/
public Driver()
throws SQLException {
super();
}
}

-------------------------------------------------------

でも、エラー出るんだから互換じゃないじゃんと思ったり。
謎ですね。
_________________
-----------------------------------------
Fedoraに乗り換えました。
http://www.lyricfathom.com/mt/linux/
たーぞう
ぬし
会議室デビュー日: 2003/08/08
投稿数: 317
お住まい・勤務地: お花畑
投稿日時: 2004-08-26 15:49
このスレなんか参考になるんじゃないかなぁ。ならんか(^^;

>String url = "jdbc:mysql:///hellodb?useUnicode=true&characterEncoding=SJIS";

データベース名は「hellodb」で合ってますか?


# JDBCに関する質問は、ここよりJava Solution会議室の方が返答が早いかも。

# 度重なる修正スマソ

[ メッセージ編集済み 編集者: たーぞう 編集日時 2004-08-26 16:04 ]
未記入
ベテラン
会議室デビュー日: 2004/08/18
投稿数: 80
投稿日時: 2004-08-26 16:32
返信していただきありがとうございます。

もしや、CLASSPATHは、通っているのではないかと思うのですが・・・・

「CLASSPATHが通れば、MySQL Connector/Jドライバ・クラスを完全限定名com.mysql.jdbc.Driverで参照できます。ClassNotFoundExceptionが発生するようなら、CLASSPATHの設定が間違っています。」

というのを見つけたのですが・・・そう考えても良いのでしょうか。

あゆかわ様、
Class.forName("com.mysql.jdbc.Driver");
にしたのですが、エラーは消えませんでした。

たーぞう様、
String url = "jdbc:mysql://hellodb?useUnicode=true&characterEncoding=SJIS";

でした。すみません。

--------------ここから-------------------------------------------
java.sql.SQLException: No suitable driver
at java.sql.DriverManager.getConnection(Unknown Source)
at java.sql.DriverManager.getConnection(Unknown Source)
at HelloWorldJDBCMySQL.main(HelloWorldJDBCMySQL.java:15)

-------------ここまでが表示されたエラーです。------------------------

このエラーはどうしたら、消えるのでしょうか。
たーぞう
ぬし
会議室デビュー日: 2003/08/08
投稿数: 317
お住まい・勤務地: お花畑
投稿日時: 2004-08-26 16:49
引用:

fuuさんの書き込み (2004-08-26 16:32) より:
String url = "jdbc:mysql://hellodb?useUnicode=true&characterEncoding=SJIS";

でした。すみません。


ん・・・?ひょっとして
コード:
String url = "jdbc:mysql:///hellodb?useUnicode=true&characterEncoding=SHIFT_JIS";

が正しいのでは・・・?
未記入
ベテラン
会議室デビュー日: 2004/08/18
投稿数: 80
投稿日時: 2004-08-26 16:55
たーぞう様、返信ありがとうございます。

私も、そう思って、試みたのですができませんでした。

characterEncodingが何か確かめる方法はあるのですか。
my.iniとかに書いてあったりしますか。
見てみたのですが、sjisとはは見当たらなかったのですが・・・。
もしや、初めに設定しておかなくては、いけないとか、ありますか。


[ メッセージ編集済み 編集者: fuu 編集日時 2004-08-26 17:03 ]
あゆかわ
会議室デビュー日: 2004/01/30
投稿数: 7
投稿日時: 2004-08-26 16:56
すいません。おおまちがい情報を書いてしまいました。
互換性ちゃんとありますね。

それから、、、、

たーぞう様:
自分もそれかと、思って今実験しました、、、。
Eclipse上でやってみたせいなのか、同じエラーメッセージではなくNo Classdef Foundだったのですが。

ああああ、、、精進します。
_________________
-----------------------------------------
Fedoraに乗り換えました。
http://www.lyricfathom.com/mt/linux/

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