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

解決済みの質問

Javaで、TomCatプロジェクトを使用したJDBCを使用したデータベースのアクセスについて教えてください。

すぐに回答を! TomCatプロジェクトでDBアクセスできず困っています。

●Javaプロジェクトの場合(成功)
 ・Javaプロジェクト作成 → 新規 → クラスを作成。
 ・プロジェクト選択 → メニューバー「プロジェクト」 → プロパティー
  → Javaのビルド・パス → ライブラリーの追加 → ユーザーライブラリー
  → 新規 → MySQLドライバを追加
 ・次のソースの実行にて、JDBC Dirverの接続を確認。

[JdbcSample.java]
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/db1", "(ユーザー名)", "(パスワード)");

// 3.SQL ステートメント・オブジェクトの作成
Statement stmt = con.createStatement();
// 4.SQL ステートメントの発行
ResultSet rs = stmt.executeQuery("SELECT * from null_test_tbl");
// 5.結果の出力
while (rs.next()) {
System.out.println(rs.getString("allow_null"));
}

// 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());
}
}
}

●TomCatプロジェクト作成の場合(失敗)
 (1)TomCatプロジェクト作成 → 新規 → クラスを作成。
 (2)プロジェクト選択 → メニューバー「プロジェクト」 → プロパティー
  → Javaのビルド・パス → ライブラリーの追加 → ユーザーライブラリー
  → 新規 → MySQLドライバを追加
 (3)サーブレットからBeanの呼び出し。
 「​http://localhost:8080/test_mvc/jdbcSample​」
 (4)エラー「Exception: com.mysql.jdbc.Driver」 が発生。(ドライバーが見つかりません?)

[servlet]
package ne.jp;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class TestMvc extends HttpServlet {

public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {


JdbcSample da = new JdbcSample();


try {
da.dbAccessTest(); (※)←ここでBeanのデータベースアクセスメソッドを呼び出し
} catch (Exception e) {
// TODO 自動生成された catch ブロック
e.printStackTrace();
}


// HTML出力の準備
response.setContentType("text/html;charset=Shift_JIS");
PrintWriter out = response.getWriter();

out.println("<html><body><p>こんにちわ!</p></body>");
}

}

[Bean]
package ne.jp;
import java.sql.*;

class JdbcSample {

//Beanコンストラクタ
public JdbcSample(){
}

//データベースアクセス確認
public void dbAccessTest(){

try {

// 1.JDBC Driver の登録
Class.forName("com.mysql.jdbc.Driver").newInstance();

// 2.データベースへの接続
Connection con = DriverManager.getConnection(
"jdbc:mysql://localhost/db1", "***", "*****");

// 3.SQL ステートメント・オブジェクトの作成
Statement stmt = con.createStatement();
// 4.SQL ステートメントの発行
ResultSet rs = stmt.executeQuery("SELECT * from null_test_tbl");
// 5.結果の出力
while (rs.next()) {
System.out.println(rs.getString("allow_null"));
}

// 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());
}
}
}

投稿日時 - 2009-06-09 01:22:34

QNo.5028674

すぐに回答ほしいです

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

Tomcatは起動時に "[Tomcatディレクトリ]/lib" ディレクトリ配下のライブラリがクラスパスに追加されます。

Javaプロジェクトの場合は「Javaのビルド・パス=実行時のクラスパス」として設定されますが、TomCatプロジェクト作成の場合は「Javaのビルド・パス=実行時のクラスパス」とはなりません。

"[Tomcatディレクトリ]/lib" ディレクトリ配下にMySQLのJDBCドライバのjarファイルを置いてもう1度確認してみて下さい。

投稿日時 - 2009-06-09 01:49:41

お礼

ご回答ありがとうございます。
助かりました。

"[Tomcatディレクトリ]/lib" ディレクトリ配下にMySQLのJDBCドライバのjarファイルを置いてもう1度確認、してみたところ動作しました。

投稿日時 - 2009-06-09 21:37:42

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

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

回答(2)

ANo.2

回答#1の補足です。

"[TOMCAT_HOME]/lib"配下にあるライブラリはどのコンテキストからも利用可能なものになります。
もし、1つのコンテキストから利用できればいいようなライブラリであれば、"[コンテキストディレクトリ]/WEB-INF/lib"配下に置いて下さい。

投稿日時 - 2009-06-09 01:55:29

お礼

ありがとうございます。

投稿日時 - 2009-06-09 21:39:54

あなたにオススメの質問