Print Friendly, PDF & Email

弊社の新人エンジニア研修向けのJSP Servletの問題集です。

 

参考:MySQL8.x向けのJDBCドライバー
https://qiita.com/syoki/items/3d82ef00300868353572

1.SELECT文

JDBCを使い、employeeテーブルの内容を全てコンソールに出力するプログラムである。

以下の①~⑧を埋めなさい。

<出力例>

1:imai:100000000
2:Yancy Jakovijevic:2000
3:Dori Daveridge:3000
(以下省略)

<employeeのテーブル構造>

<ソースコード> a~cの接続情報は講師から入手してください。(以下同じ)

※このソースコードでは例外を一括して呼び出し側に投げています。
本来は例外の内容に応じたきめ細かい例外処理をすべきですが、論点を明確にするためにそうしました。

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;

public class JdbcSample1 {

    public static void main(String[] args) throws Exception {

        final String URL = "/*a*/";
        final String ID = "/*b*/";
        final String PASS = "/*c*/";

        String sql = "SELECT * FROM employee;";

        Class./*①*/("com.mysql.cj.jdbc.Driver");

        /*②*/ conn = DriverManager.getConnection(URL, ID, PASS);

        PreparedStatement ps = conn./*③*/(sql);

        ResultSet rs = ps./*④*/);
        while (rs./*⑤*/)) {
            StringBuilder sb = new StringBuilder();
            sb.append(rs.getInt("employeeNo")).append(":").append(rs.getString("employeeName")).append(":").append(rs.getInt("salary"));
            System.out.println(sb);
        }

        /*⑥*/.close();
        /*⑦*/.close();
        /*⑧*/.close();

    }
}

 

2.Webアプリ連携

上記プログラムをWebアプリケーションにしなさい。(Webブラウザで表示する)

研修でJava SE 7 以降を使ってるのであれば、try-with-resources構文を使うこと。

<出力例>

社員番号 氏名 年収
1 imai 100000000
2 Yancy Jakovijevic 2000
3 Dori Daveridge 3000
4 Lexie Baylay 4000
5 Laurena MacKessock 5000

(中略)

 

3.INSERT文

employeeテーブルに以下のレコードを追加しなさい。

employeeNo:1001

employeeName:あなたの名前

salary:10000000

import java.io.IOException;
import java.io.PrintWriter;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
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("/InsertSampleServlet")
public class InsertSampleServlet extends HttpServlet {

    @Override
    protected void doGet(HttpServletRequest request,
            HttpServletResponse response) throws ServletException,
            IOException {

        final String URL = "jdbc:mysql://database-1.c1co8dg0cjjs.ap-northeast-1.rds.amazonaws.com:3306/sample_db?characterEncoding=utf8&useSSL=false&serverTimezone=GMT%2B9&rewriteBatchedStatements=true";
        final String ID = "admin";
        final String PASS = "";

        int cnt = 0;

        try {
            Class.forName("com.mysql.cj.jdbc.Driver");
            try (Connection conn = DriverManager.getConnection(URL, ID, PASS);
                    PreparedStatement ps = conn.prepareStatement("/*①*/")) {
                ret = ps./*②*/();
            }
        } catch (Exception e) {
            e.printStackTrace();
        }

        PrintWriter out = response.getWriter();

        out.println("<!DOCTYPE html>");
        out.println("<html>");
        out.println("<head>");
        out.println("<meta charset=\"UTF-8\">");
        out.println("<title>Insert文</title>");
        out.println("</head>");
        out.println("<body>");
        out.println("<h1>" + cnt + "件追加しました。</h1>");
        out.println("</body>");
        out.println("</html>");
    }
}

 

4.UPDATE文

3.で追加したレコードのsalaryを1桁増やしなさい。

import java.io.IOException;
import java.io.PrintWriter;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
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("/UpdateSampleServlet")
public class UpdateSampleServlet extends HttpServlet {

    @Override
    protected void doGet(HttpServletRequest request,
            HttpServletResponse response) throws ServletException,
            IOException {

        final String URL = "jdbc:mysql://database-1.c1co8dg0cjjs.ap-northeast-1.rds.amazonaws.com:3306/sample_db?characterEncoding=utf8&useSSL=false&serverTimezone=GMT%2B9&rewriteBatchedStatements=true";
        final String ID = "admin";
        final String PASS = "";

        int cnt = 0;

        try {
            Class.forName("com.mysql.cj.jdbc.Driver");
            try (Connection conn = DriverManager.getConnection(URL, ID, PASS);
                    PreparedStatement ps = conn.prepareStatement("/*①*/")) {
                ret = ps.executeUpdate();
            }
        } catch (Exception e) {
            e.printStackTrace();
        }

        PrintWriter out = response.getWriter();

        out.println("<!DOCTYPE html>");
        out.println("<html>");
        out.println("<head>");
        out.println("<meta charset=\"UTF-8\">");
        out.println("<title>Update文</title>");
        out.println("</head>");
        out.println("<body>");
        out.println("<h1>" + cnt + "件更新しました。</h1>");
        out.println("</body>");
        out.println("</html>");
    }
}

5.DELETE文

3.で追加したレコードを削除しなさい。

6.あいまい検索

名前に文字列“ima”を含む社員を検索しなさい。

<出力例>

 

JavaWebアプリケーションの問題集に戻る