データベース接続
この節では、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)」ボタンをクリックします。
すると、ファイルが追加されます。
○ ファイル
プロジェクトに次のようなServletを追加してください。
パッケージ名 | test.servlet |
---|---|
クラス名 | ConnectionTest |
スーパークラス名 | javax.servlet.http.HttpServlet |
○ プログラム
doGetメソッドを追加して、次のようにプログラムを入力してください。
ConnectionTest.java
- package test.servlet;
- import java.io.IOException;
- import java.io.PrintWriter;
- import java.sql.Connection;
- import java.sql.DriverManager;
- import javax.servlet.ServletException;
- import javax.servlet.annotation.WebServlet;
- import javax.servlet.http.HttpServlet;
- import javax.servlet.http.HttpServletRequest;
- import javax.servlet.http.HttpServletResponse;
- @WebServlet("/connectiontest")
- public class ConnectionTest extends HttpServlet {
- @Override
- protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
- String message = null;
- Connection con = null;
- try{
- //JDBCドライバクラスの指定
- String drivername = "com.mysql.jdbc.Driver";
- //データベースを指定
- String url = "jdbc:mysql://localhost:3306/books?characterEncoding=utf8";
- //ユーザー名
- String username = "root";
- //パスワード
- String password = "";
- //指定したドライバクラスを読み込み
- Class.forName(drivername);
- //データベースに接続
- con = DriverManager.getConnection(url, username, password);
- message = "データベースに接続できました。";
- }catch(Exception e){
- //エラーメッセージをセット
- message = "データベースに接続できませんでした。";
- }finally{
- try{
- //データベースに接続されていれば切断する
- if(con != null){
- con.close();
- }
- }catch(Exception e){
- message = "エラーが発生しました。";
- }
- }
- //クライアントへの出力準備をする
- resp.setContentType("text/html;charset=utf-8");
- PrintWriter pw = resp.getWriter();
- //クライアントにHTMLタグを書き出し
- pw.println("<html>");
- pw.println("<head>");
- pw.println("<title>データベースに接続する</title>");
- pw.println("</head>");
- pw.println("<body>");
- pw.println(message);
- pw.println("</body>");
- pw.println("</html>");
- }
- }
○ 実行結果
次のURLを入力して実行してみましょう。
http://localhost:8080/WebApp/connectiontest
○ 解説
データベースに接続するための準備として、データベース用のドライバをJavaの実行環境に読み込みます。36行目で、設定したJarファイルの中から、ドライバにあたるクラスをClassクラスのforNameメソッドで実行環境に読み込んでおきます。次に39行目で、データベースに接続するためにDriverManagerクラスのgetConnectionメソッドを使用します。このメソッドの引数で、接続するデータベース、接続ユーザー名、パスワードを指定します。これによりデータベースに接続できるので、データベースに対する処理を記述します(今回はなし)。その後、48行目でデータベースを閉じます。