ServletからDBアクセス

PostgreSQL

環境

  • Windows Vista
  • jre 1.6
  • Eclipse 3.4.2
  • Tomcat 6.0
  • PostgreSQL 8.4.701
  • JDBC: postgresql-8.4-701.jdbc4.jar

手順

  1. PostgreSQLをダウンロード&インストール
    1. PostgreSQLにDBを作成
    2. 作成したDBにテーブルと列を作成
    3. 作成したテーブルにレコードを作成
  2. PostgreSQL用JDBCをダウンロード
  3. %CATALINA_HOME%\lib にJDBCのjarをセット
  4. CLASSPATHにJDBCのjarを登録
  5. Eclipseに新規に動的Webプロジェクトを生成
  6. Servletクラスを生成
  7. コーディング(下記参照)

Servletのソース


package test;

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;
import java.net.*;
import java.sql.*;


/**
 * Servlet implementation class TestServlet
 */
public class TestServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;

   /**
    * @see HttpServlet#HttpServlet()
    */
   public TestServlet() {
       super();
       // TODO Auto-generated constructor stub
   }

	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
	    String drv = "org.postgresql.Driver";
	    String dsn = "jdbc:postgresql://localhost:5432/testdb";
	    String usr = "postgres";
	    String pwd = "hoge";
	    String sql = "select * from staff";
	    Connection cn = null;
	    Statement st = null;
	    ResultSet rs = null;

	    // コンテンツタイプ指定
	    response.setContentType("text/html; charset=SJIS");

	    // HTML ヘッダ出力
	    PrintWriter rw = response.getWriter();
	    rw.println("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0//EN\">");
	    rw.println("<HTML>");
	    rw.println("<HEAD>");
	    rw.println("<META http-equiv=\"Content-Type\" content=\"text/html; charset=Shift_JIS\">");
	    rw.println("<TITLE>JAVA Servlet - PostgreSQL JDBC Test</TITLE>");
	    rw.println("</HEAD>");
	    rw.println("<BODY>");
	    rw.println("<P>JAVA Servlet - PostgreSQL JDBC Test</P>");

	    // PostgreSQL JDBC ドライバロード
	    try {
	      Class.forName(drv);
	    } catch (Exception e) {
	      rw.println("<P>JDBC ドライバロードエラー<BR>" + e.toString() + "</P>");
	    }

	    // PostgreSQL JDBC 接続
	    try {
	      cn = DriverManager.getConnection(dsn,usr,pwd);
	    } catch (Exception e) {
	      rw.println("<P>JDBC 接続エラー<BR>" + e.toString() + "</P>");
	    }

	    // PostgreSQL JDBC 問い合わせ SQL 作成
	    try {
	      st = cn.createStatement();
	    } catch (Exception e) {
	      rw.println("<P>JDBC 問い合わせ SQL 作成エラー<BR>" + e.toString() + "</P>");
	    }

	    // PostgreSQL JDBC レコードセットオープン
	    try {
	      rs = st.executeQuery(sql);
	    } catch (Exception e) {
	      rw.println("<P>JDBC レコードセットオープンエラー<BR>" + e.toString() + "</P>");
	    }

	    // PostgreSQL JDBC レコードセットリード
	    try {
	      while (rs.next()) {
			  // 検索された行数分ループ
			  // idを取得
			  int id = rs.getInt("id");
			  // nameを取得
			  String name = rs.getString("name");

			  // 表示
			  rw.println("<P>" + id + " " + name + "</P>");
	        //rw.println("<P>" + rs.getString(1) + "</P>");
	      }
	    } catch (Exception e) {
	      rw.println("<P>JDBC レコードセットリードエラー<BR>" + e.toString() + "</P>");
	    }

	    // PostgreSQL JDBC レコードセットクローズ
	    try {
	      rs.close();
	    } catch (Exception e) {}

	    // PostgreSQL JDBC ステートメントクローズ
	    try {
	      st.close();
	    } catch (Exception e) {}

	    // PostgreSQL JDBC 接続クローズ
	    try {
	      cn.close();
	    } catch (Exception e) {}

	    // HTML テイル出力
	    rw.println("</BODY>");
	    rw.println("</HTML>");

	}

	/**
	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		doGet(request, response);
	}

}

タグ:

+ タグ編集
  • タグ:
最終更新:2010年05月09日 00:24