こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

JDBCドライバについて

JavaからアクセスしたいのでJDBCドライバをインストール、設定しようとしたのですが、Tomcatに組み込むやり方がわかりません。このサイトを参考にしてやったのですが・・・

<< db105.java >>

データベース(0):JDBCドライバ

JavaのプログラムからMySQLのデータベースへ接続するにはJDBCドライバが必要である。
●JDBCドライバのダウンロードとインストール

(1)Webブラウザで、http://www.mysql.com/downloads/に接続する。
ダウンロードするバージョン(MySQL Connector/J 3.0)をクリックする。
(2)http://dev.mysql.com/downloads/connector/j/3.0.htmlに切り替わる。Downloadをクリックする。
(3)ダウンロードが始まるので、保存先をデスクトップにする。ファイル(mysql-connector-java-3.0.15-ga.zip)がデスクトップに保存される。
(4)ZIP形式のファイル(mysql-connector-java-3.0.15-ga.zip)を解凍する。デスクトップ上のディレクトリ(mysql-connector-java-3.0.15-ga\mysql-connector-java-3.0.15-ga)内のファイル(mysql-connector-java-3.0.15-ga-bin.jar)にJDBCドライバが存在する。
(5)JDBCドライバを環境変数CLASSPATHに追加する。
SET CLASSPATH=%CLASSPATH%;c:\mysql-connector-java-3.0.15-ga\mysql-connector-java-3.0.15-ga-bin.jar;.
ただし、JDBCドライバは、
c:\mysql-connector-java-3.0.15-ga\mysql-connector-java-3.0.15-ga-bin.jarに存在する。
●Tomcatに組み込む。
ファイル(mysql-connector-java-3.0.15-ga-bin.jar)を
%CATALINA%\shared\libの下にコピーする。その後、再起動する。

2番目の黒丸の%CATALINA%\shared\libが全くみつからないです。教えてください~;;

投稿日時 - 2005-04-26 10:23:51

QNo.1352785

暇なときに回答ください

質問者が選んだベストアンサー

おっ、解決したみたいですね。

なんかあまり役に立てなかったですけど、
解決してよかったです。

投稿日時 - 2005-04-27 13:49:29

このQ&Aは役に立ちましたか?

14人が「このQ&Aが役に立った」と投票しています

回答(10)

ANo.9

ソースのimport java.sql.*;の下に

import org.gjt.mm.mysql.Driver;

を追加してみましょうか?
それでコンパイルをしてみて、コンパイルできればクラスパスが通ってます。
コンパイルエラーが出たらクラスパスが通ってません。

コンパイル後に実行してみて同様のExceptionが出るのは、コンパイル時と実行時のクラスパスが違うということになります。

投稿日時 - 2005-04-27 13:18:59

補足

ユーザー環境変数にパスを通し、MySQLのパスワードをなしにしたらできました!今まではシステム環境変数のみにパスを通していたのでできなかったみたいです^^;いろいろとありがとうございました!かなり勉強になりました^^

投稿日時 - 2005-04-27 13:42:47

ANo.8

う~ん…

頂いたソースと、自分もmySQLのJDBCドライバをダウンロードして、実行したところ、とりあえずドライバのロードはできました。

その後DBへ接続できない←当たり前ですね。(笑)
とExceptionが発生しました…。

くどいようですが、コマンドプロンプトから
java HelloWorldJDBCMySQL
と実行しているのですよね???
EclipseなどのIDE上で実行しているのではないですよね???
Eclipseなどで実行している場合、Eclipseが実行するときのクラスパスを別途設定しないといけなかったような気がします。

投稿日時 - 2005-04-27 10:25:55

ANo.7

>setを実行したところ、…
そうですか…ではCLASSPATHは通ってるようですね…。

ClassNotFoundExceptionってことはコンパイルは通ってるってことですよね?

どうやって実行してます?
#4で
1.単なるJavaアプリからアクセスしたい。
ということですから
例えば
public class hoge{
  public static void main(String args[]){
    //ドライバをロード
    …
    //接続する
    …
    //SELECTする
  }
}
↑みたいなクラスを作ってコンパイルして、コマンドプロンプトから
java hoge
と実行しているんですよね?
そうすると
java.lang.ClassNotFoundException…
が出力されるんですよね?

出来たらソースファイル(~.java)を載せてもらえます?
あと、ClassNotFoundExceptionが出るときに他にもっとメッセージ出てて、質問者さんの作ったjavaファイルの行番号が出てません?
そこがClassNotFoundExceptionの発生している箇所です。

投稿日時 - 2005-04-26 20:45:59

補足

遅くなって申し訳ございません^^;
ソースファイルは、

import java.sql.*;

public class HelloWorldJDBCMySQL {
public static void main(String[] args) {
try {
// ドライバクラスをロード
Class.forName("org.gjt.mm.mysql.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();
}
}
}

エラーは、
Exception inthread "main"java.lang.NoClassDefFoundError:
HelloWorldJDBCMySQL

です。

投稿日時 - 2005-04-27 08:56:35

ANo.6

Tomcatは必要ないのでは?
(#4の回答に対する補足より)

コマンドプロンプトで
set
とだけ入力してENTERすると、文字がいっぱいでてきますよね?
その中に
1.
CLASSPATH=C:\j2sdk\~
と色々でてきていますか?
その中に
2.
[javaインストールフォルダ]\bin
と([]の中身は質問者さんのPCにより変わります。)
3.
c:\mysql-connector-java-3.0.15-ga\mysql-connector-java-3.0.15-ga-bin.jar
がありますよね?

1.2.3.が全てあれば、とりあえず、CLASSPATHは通っています。

もしうまくいかないようでしたら、
OS、javaのバージョンなどを教えていただけますか?

とりあえず、Windows XP Proの場合の環境変数の設定の仕方を書いておきます。
1.
スタート→設定→コントロールパネル
でコントロールパネルを開き、
その中のシステムにカーソルを合わせてENTER。
(もしくはデスクトップのマイコンピュータを右クリックして、プロパティをクリックする。)
2.
システムのプロパティダイアログの
詳細設定タブをクリックする。
3.
環境変数ボタンを押す。
4.
システム環境変数の中のところから
CLASSPATH
を選択して編集ボタンを押す。
5.
システム変数の編集ダイアログの
変数値
の末尾に
;c:\mysql-connector-java-3.0.15-ga\mysql-connector-java-3.0.15-ga-bin.jar
を追加すしてOKボタンを押す。
(先頭のセミコロンを忘れずに)
6.
あとは全てのダイアログでOKを押して閉じていく。
7.
新しくコマンドプロンプトを起動して
set
と入力してENTERを押して表示される文字列の中に
CLASSPATH=…省略…;c:\mysql-connector-java-3.0.15-ga\mysql-connector-java-3.0.15-ga-bin.jar
とあれば成功。

投稿日時 - 2005-04-26 18:30:53

補足

setを実行したところ、1,2,3全てありました。
しかしやっぱりできません;;
OS:Microsoft Windows 2000 5.00.2195 Service Pack 4
Java:jdk1.5.0_02

です。

投稿日時 - 2005-04-26 19:30:50

ANo.5

いやはや、そういうことでしたら参考URLのページが参考になる予感です。
(DBのテーブル名、URLなどはご自身の環境に合わせて修正して下さいね。)

java.lang.ClassNotFoundException
は(5)のクラスパスにjarの記述を追加していれば出ないと思われますが…。
コマンドプロンプトで
echo %CLASSPATH%
とするとJDBCのjarへのパスがどこかに表示されますよね?

参考URL:http://www.hellohiro.com/jdbcmysql.htm

投稿日時 - 2005-04-26 16:10:27

補足

参考のURL通りにやってみましたが、同じようなエラーが出てしまいます。クラスパスの方も問題ありません。コマンドプロンプトでecho~~をやっても、%CLASSPATH%と表示されるだけなんです;;
一応最新のJava、最新のTomcatをインストールしてやってみました。

投稿日時 - 2005-04-26 17:51:48

ANo.4


そういうことですか。(^^;A
Tomcatをインストールしていない。
ということでよろしいですね?

>Javaからアクセスしたいので…
というのはどういう意味なのでしょうか?
1.単なるJavaアプリからアクセスしたい。
ということでしたら、Tomcatは必要ないです。
2.WEBアプリを作っていて、そこからアクセスしたい。
ということでしたら、Tomcatが
(…というか、サーブレットを動かすのに「サーブレットコンテナ」というものが必要で、そのサーブレットコンテナの中の1つがTomcatです。ですから別にTomcat以外のサーブレットコンテナでも構いません。)
必要です。

とりあえず1.でしたら、(5)でCLASSPATHを通したことでコンパイル→実行できるはずです。

投稿日時 - 2005-04-26 15:21:23

補足

1番ですかね^^;ってことは必要ないですよね?
でも・・・ネットに乗ってたサンプルを動かそうとすると

java.lang.ClassNotFoundException:org.gjt.mm.mysql.Driver

というエラーがでてしまいます;;

投稿日時 - 2005-04-26 15:35:55

ANo.3

たぶんそれだと思うのですが…
そのSHAREDというフォルダの下に「lib」というフォルダがありませんでしたか?
そのフォルダはTomcatの下にあるフォルダではなかったですか?
↑の2つに該当してればそのフォルダの下libに入れればいいんですけど。

もしTomcatのインストールフォルダでもなく、下にlibフォルダもないのであれば、うーん…
とりあえず、Tomcatのバージョンなど教えてもらえますか?

投稿日時 - 2005-04-26 14:52:15

補足

libフォルダはありません。VC6というフォルダの下にありました。Tomcatとというものが何なのかが全くわかりません;;

投稿日時 - 2005-04-26 14:53:43

ANo.2

>環境変数に追加してあるのですが、%CATALINA%と出力されてしまいます。
環境変数に追加してあれば、その値が出るはずなのですが…

でも、この場合は
CATALINAという環境変数にTomcatのインストールフォルダのパスが設定されている。
ということが重要ではなくて、
jarをTomcatのインストールフォルダ\shared\libの下にコピーする。
ということが重要なので、jarをコピーしてTomcatを再起動すれば使えますよ。

もし、Tomcatのインストールフォルダがわからず、
Tomcatのインストールフォルダ\shared\lib
が分からないというのであれば、
スタート→検索→ファイルやフォルダ
で「shared」というフォルダを検索してみてはいかがでしょうか?

投稿日時 - 2005-04-26 13:50:55

補足

検索してみましたが「SHARED」というフォルダしか出てきませんでした。これなのでしょうか?

投稿日時 - 2005-04-26 14:22:51

ANo.1

おそらくTomcatのインストールフォルダのことだと思います。
Windowsですよね?であれば、
コマンドプロンプトで
echo %CATALINA%
とすれば出てきますよ。
(環境変数に設定してあればですけど…。)
そのまま%CATALINA%と出力された場合は環境変数に設定されてないってことです。

たとえば↓な風になります。
C:\Program Files\Apache Group\Tomcat 4.1

投稿日時 - 2005-04-26 11:03:40

補足

環境変数に追加してあるのですが、%CATALINA%と出力されてしまいます。

投稿日時 - 2005-04-26 13:14:15