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());
}
}
}
お礼
早速の回答ありがとうございます! Javaでは大分前からJDBCの様ですが変わらないのですね。 ちょっと古めの本でもよいのかなと考えると選べる本が多そうでいい感じです。 データベースの標準とあったのは、Macが頭にあったので、思わずそう書いてしまいました。 MySQLのドライバのダウンロードサイトまでご紹介くださりありがとうございます。 コツコツとやっていこうと思います。