データベース接続

この節では、ServletやJSPからデータベースに接続する方法を学習します。今回はデータベース連携編で準備したデータベースを利用します。Javaからデータベースに接続するには、接続するための部品を使用するので、準備をする必要があります。今回はMySQLを活用しますので、次のファイルを用意します。(データベース連携編で使用したファイル)

mysql-connector-java-8.0.22.jar

上記のファイルをWebサイト内のWEB-INFフォルダー内のlibフォルダーに配置します。プロジェクト・エクスプローラーよりWebサイト内の「WEB-INF」―「lib」フォルダーを右クリックして、表示されるメニューより「インポート(I)...」を選択してください。

インポートを選択
インポートを選択

次の図のように「一般」―「ファイル・システム」を選択し、「次へ(N)>」をクリックします。

ファイル・システムを選択
ファイル・システムを選択

次の図のように、「次のディレクトリーから(Y)」に用意したJARファイルが格納されているフォルダーを指定します。すると、下に一覧が表示されるので、「mysql-connector-java-8.0.22.jar」にチェックを入れて「完了(F)」ボタンをクリックします。

JARファイルを選択
JARファイルを選択

すると、ファイルが追加されます。

ファイルが追加された
ファイルが追加された

○ ファイル

プロジェクトに次のようなServletを追加してください。

パッケージ名 test.servlet
クラス名 ConnectionTest
スーパークラス名 javax.servlet.http.HttpServlet

サンプルダウンロード

○ プログラム

doGetメソッドを追加して、次のようにプログラムを入力してください。

ConnectionTest.java

  1. package test.servlet;
  2. import java.io.IOException;
  3. import java.io.PrintWriter;
  4. import java.sql.Connection;
  5. import java.sql.DriverManager;
  6. import javax.servlet.ServletException;
  7. import javax.servlet.annotation.WebServlet;
  8. import javax.servlet.http.HttpServlet;
  9. import javax.servlet.http.HttpServletRequest;
  10. import javax.servlet.http.HttpServletResponse;
  11. @WebServlet("/connectiontest")
  12. public class ConnectionTest extends HttpServlet {
  13.     @Override
  14.     protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
  15.         String message = null;
  16.         Connection con = null;
  17.         
  18.         try{
  19.             //JDBCドライバクラスの指定
  20.             String drivername = "com.mysql.jdbc.Driver";
  21.             
  22.             //データベースを指定
  23.             String url = "jdbc:mysql://localhost:3306/books?characterEncoding=utf8";
  24.             
  25.             //ユーザー名
  26.             String username = "root";
  27.             
  28.             //パスワード
  29.             String password = "";
  30.             
  31.             //指定したドライバクラスを読み込み
  32.             Class.forName(drivername);
  33.             
  34.             //データベースに接続
  35.             con = DriverManager.getConnection(url, username, password);
  36.             message = "データベースに接続できました。";
  37.         }catch(Exception e){
  38.             //エラーメッセージをセット
  39.             message = "データベースに接続できませんでした。";
  40.         }finally{
  41.             try{
  42.                 //データベースに接続されていれば切断する
  43.                 if(con != null){
  44.                     con.close();
  45.                 }
  46.             }catch(Exception e){
  47.                 message = "エラーが発生しました。";
  48.             }
  49.         }
  50.         
  51.         //クライアントへの出力準備をする
  52.         resp.setContentType("text/html;charset=utf-8");
  53.         PrintWriter pw = resp.getWriter();
  54.         
  55.         //クライアントにHTMLタグを書き出し
  56.         pw.println("<html>");
  57.         pw.println("<head>");
  58.         pw.println("<title>データベースに接続する</title>");
  59.         pw.println("</head>");
  60.         pw.println("<body>");
  61.         pw.println(message);
  62.         pw.println("</body>");
  63.         pw.println("</html>");
  64.     }
  65. }

○ 実行結果

次のURLを入力して実行してみましょう。

http://localhost:8080/WebApp/connectiontest

実行結果
実行結果

○ 解説

データベースに接続するための準備として、データベース用のドライバをJavaの実行環境に読み込みます。36行目で、設定したJarファイルの中から、ドライバにあたるクラスをClassクラスのforNameメソッドで実行環境に読み込んでおきます。次に39行目で、データベースに接続するためにDriverManagerクラスのgetConnectionメソッドを使用します。このメソッドの引数で、接続するデータベース、接続ユーザー名、パスワードを指定します。これによりデータベースに接続できるので、データベースに対する処理を記述します(今回はなし)。その後、48行目でデータベースを閉じます。

前へ   次へ