Java技術情報


/*
 * レベル3 use DB driver (select)
 */

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

// DB通信関係のオペレートに必要なクラス群を追加。
import java.sql.*;


public class Level030 extends HttpServlet {

    /*** init サービス ***/
    public void init(ServletConfig conf) throws ServletException
    {
	super.init(conf);
    }


    /*** doGet サービス ***/
    public void doGet (HttpServletRequest req, HttpServletResponse res)
	    throws ServletException, IOException
    {

	// 変数宣言
	String s_param = "";
	String s_result[] = null;// 配列型文字列の宣言。
	String sql = "";

	Connection connection = null;
	PreparedStatement  statement  = null;
	int i_count = 0;

	try{

	    res.setContentType("text/html; charset=MS932");


	    // JDBCの通信階層は以下のようになる。
	    // 	ドライバクラス( ← JDBC)をロード
	    // 		DBコネクションの確立 (ユーザ/パスワード/接続先)
	    //			ステートメントの生成 (コネクション内で動く"手"のようなモノ)
	    //				SQLをステートメントに格納
	    //				SQLの実行&結果(ResultSet型オブジェクト)の受領
	    //					ResultSet の解析・処理
	    //				ResultSet の解放
	    //			ステートメントの解放
	    //		DBコネクションの解放
	    //	(ドライバクラスの解放) ← ガベジコレクション時にデストラクタが
	    //								Autoでやってくれる。

	    // DBコネクション確立後は、SQL文を複数投げることが可能。
	    // SQLを作るまでは誰でも気にするが、ステートメントの解放、
	    // DBコネクションの解放は 忘れがちなので注意。特にtry~catch句の
	    // 中に close を書く場合、エラー時、読み飛ばされるのを想定しておくこと。


	    // JDBC Driver Load 
		// Oracle9の場合、CLASSPATHに classes12.jar , nls_classes12.jar が必要。
		// このjarの中に、 oracle/jdbc/driver/OracleDriver.class がある。
	    Class.forName("oracle.jdbc.driver.OracleDriver");
	    //Class.forName("org.gjt.mm.mysql.Driver"); //MYSQL Version


	    // set parameter
	    Properties props = new Properties();      // ユーザー名/パスワードなどを入れるオブジェクト
	    props.put("user","user1");                // ユーザー名を入れる。
	    props.put("password","pass1");            // パスワードを入れる。
		String s_db_url = "jdbc:oracle:thin:@db.gospel4.ne.jp:1521:ORCL";
		//String s_db_url = "jdbc:mysql://192.168.0.4:3306/test?useUnicode=true&characterEncoding=MS932"; //MYSQL Version


	    // getConnection には、2種類(ホントは4種類)あり、
	    //  jdbc:oracle:oci8:@GOSPEL4.WORLD
	    //  jdbc:oracle:thin:@db.gospel4.ne.jp:1521:ORCL
	    // がある。
	    // oci8 は そのマシンのORACLE_HOMEから"GOSPEL4.WORLD"というサービス名を
	    // 探しに行き、その中の接続情報をもとに接続する。
	    // thin は 純粋に「そのマシンの、その1521ポートの、そのORACLE_SID」に接続
	    // する。

	    // DBコネクションを取得。確立できなければエラー
	    connection = DriverManager.getConnection(s_db_url,props);
	    if(connection == null){
		throw new SQLException("connection error.");
	    }


	    // make sql
	    sql  = "SELECT \n";
	    sql += "COL_A \n";
	    sql += "FROM TABLE_A \n";
	    //System.out.println(sql);    // SQLのデバッグ文。平時はコメントアウト

	    // SQLをセットし、コネクションからステートメントを作成
	    statement = connection.prepareStatement(sql);

	    // sql を投げる。
	    statement.executeQuery();

	    // get Result。statementオブジェクトから結果オブジェクトを取り出す。
	    ResultSet resultset = statement.getResultSet();

	    // 結果格納用配列を用意する。
	    s_result = new String[100000]; // 配列型文字列の有効化。暫定的に100000個の枠を取った。

	    // write DB-data
	    while (resultset.next()) {
		String s_user_cd = resultset.getString("COL_A");
		s_result[i_count] = s_user_cd ;
		i_count ++;
	    }
	    resultset.close();   // あけたら閉じる。
	    statement.close();   //
	    connection.close();  // 続けてSQLをなげる場合などは、閉じない。

	    PrintWriter pw = res.getWriter();

	    pw.println("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 Transitional//EN\">");
	    pw.println();
	    pw.println("<head>");
	    pw.println("<meta http-equiv=\"Content-Type\" content=\"text/html; charset=Shift_JIS\">");
	    pw.println("<!-- The Servlet expression tags interpolate script variables into the HTML -->");
	    pw.println("<title>ハロー!</title>");
	    pw.println("</head>");
	    pw.println("<body bgcolor=white>");
	    pw.println();

	    pw.println("<h1>ハロー!</h1>");

	    // 基本的なforループ
	    // forのカッコ内は (初期値;終了判定値;ループ毎の変数変化)
	    //  なお、変数は複数設定可能である。
	    for(int i=0;i


ブラウザはIE6.0sp2以上、解像度1024*768以上を推奨します。
戻る
gospel4 トップへ