データ表示用のJSPを作成する
では、JSPのソースコードを作成しましょう。ここでは、プロジェクトにindex.jspを作成し、これにデータベース利用の処理を用意することにします。
<%@ page language="java" contentType="text/html; charset=windows-31j"
pageEncoding="windows-31j"%>
<%@ page import="java.sql.*" %>
<%@ page import="java.util.*" %>
<%
Connection conn = null;
Statement state = null;
ResultSet rs = null;
try {
Class.forName("org.apache.derby.jdbc.EmbeddedDriver")
.newInstance();
Properties prop = new Properties();
prop.put("user", "tuyano");
prop.put("password", "tuchan");
conn = DriverManager.getConnection("jdbc:derby:test",prop);
conn.setAutoCommit(true);
state = conn.createStatement();
String query = "select * from mytable order by number";
rs = state.executeQuery(query);
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-31j">
<title>Java DB Sample</title>
</head>
<body bgcolor="#FFFFAA">
<h3>Java DBのデータベース・サンプル</h3>
<br>
<table width=400 bgcolor="#FFFFFF">
<tr><td colspan=2>※レコードの追加</td></tr>
<form method="post" action="add_action.jsp">
<tr><td>整理番号:</td>
<td><input type="text" name="number" size="10"></td></tr>
<tr><td>名前:</td>
<td><input type="text" name="name" size="60"></td></tr>
<tr><td>その他:</td>
<td><input type="text" name="etc" size="60"></td></tr>
<tr><td></td><td><input type="submit"></td></tr>
</form>
</table>
<br><br>
<table border=1 width=400 bgcolor="#FFFFFF">
<tr bgcolor="#AAAAFF"><th>整理番号</th>
<th>名前</th><th>その他</th></tr>
<%
while(rs.next()){
int number = rs.getInt("number");
String name = rs.getString("name");
String etc = rs.getString("etc");
out.println("<tr>");
out.println("<td>" + number + "</td>");
out.println("<td>" + name + "</td>");
out.println("<td>" + etc + "</td>");
out.println("</tr>");
}
%>
</table>
</body>
</html>
<%
} catch(Exception ex){
ex.printStackTrace();
} finally {
try {
rs.close();
state.close();
conn.close();
}catch(Exception ex){}
}
%>
このページでは、2つの要素が用意されます。1つは、新たにレコードを追加するためのフォーム。もう1つは、現在のレコードを一覧表示するためのテーブルです。フォームについては、postで"add_action.jsp"に送信するようにしてあります。このファイルは、後で作成することにしましょう。
肝心の、データベース利用の部分について見てみましょう。まず、ドライバをロードします。今回は、EmbeddedDriverを利用しますので、以下のようにしてクラスをロードします。
Class.forName("org.apache.derby.jdbc.EmbeddedDriver").newInstance();
続いて、接続の準備をします。まず、接続に使用する情報(ユーザ名とパスワード)をjava.util.Propertiesインスタンスとして用意します。
Properties prop = new Properties();
prop.put("user", "tuyano");
prop.put("password", "tuchan");
続いて、DriverManager.getConnectionで接続を行ないます。接続先は、"jdbc:derby:データベース名"という形になります。この際、先ほど用意したPropertiesを引数に渡しておきます。
conn = DriverManager.getConnection("jdbc:derby:test", prop);
conn.setAutoCommit(true);
接続までできたら、後は一般的なSQLデータベースへのアクセスとほぼ同じです。Statementを用意し、クエリーを実行します。
state = conn.createStatement();
String query = "select * from mytable order by number";
rs = state.executeQuery(query);
そして、ResultSetのnextを呼び出し、必要な値を取得して処理を行なっていきます。このあたりは、テーブルの設計にあわせて作成していくことになるでしょう。
while(rs.next()){
int number = rs.getInt("number");
String name = rs.getString("name");
String etc = rs.getString("etc");
・・・略・・・
SELECTでデータを取得し処理する基本的な流れは、こんな感じになります。接続さえきちんとできれば、後はデータベース利用の基本的な方法がそのまま使えますから悩むところはそれほどないでしょう。