Servlet日記(1999/09/19)

本日の成果

 今回は、ServletからJDBCを用いてデータベースにアクセスしてみます。[1]を参考に、データベースの内容をHTML形式で出力するようにしてみました。データベースの構造やアクセス処理は、[1]からほぼそのままです。違いは、ODBCデータソースで、システムDSNとして登録したところぐらいでしょうか。

 とりあえずこれで、データベースの内容を表示できるようです。が、これでは効率悪いなぁ

import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
import java.util.*;
import java.sql.*;

public class DBServlet1 extends HttpServlet {
  //HTTP Get リクエストの処理
  public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    String url = "jdbc:odbc:shain";
    String user = "admin";
    String password = "admin";
    String id, name, belong;
    String sql;
    Connection con = null;
    Statement stmt;

    try {
      Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
      con = DriverManager.getConnection(url, user, password);
      stmt = con.createStatement();

      sql = "SELECT ID, NAME, BELONG FROM SHAIN";
      ResultSet rs = stmt.executeQuery(sql);

      response.setContentType("text/html");
      PrintWriter out = new PrintWriter (response.getOutputStream());
      out.println("<html>");
      out.println("<head><title>Servlet1</title></head>");
      out.println("<body>");
      out.println("<table border>");

      while (rs.next()) {
        id = rs.getString("ID");
        name = rs.getString("NAME");
        belong = rs.getString("BELONG");
        out.println("<tr><td>" + id + "<td>" + name + "<td>" + belong);
      }

      out.println("</table>");
      out.println("</body></html>");
      out.close();

      rs.close();
      stmt.close();
      con.close();
    } catch (Exception e) {
      e.printStackTrace();
    }
  }

本日の教訓

 JDBCの簡単な使い方は分かりました。しかし、この実装はよくないですよね([1]が悪いのではなく、Servletとしての実装が悪いという意味です)。

参考文献

  1. 稲村 大介, Accessで学ぶJDBC最初の一歩, JAVA PRESS Vol.8 pp.2-10, 技術評論社 1999

Servlet日記(1999/09/12) Servlet日記の目次 Servlet日記(1999/11/05)