レコードの追加処理
残るは、フォームを送信先であるadd_action.jspの作成です。ここでは、送信されたフォームの内容をもとにレコードの追加を行い、リダイレクトでindex.jspに戻ります。
<%@ page language="java" contentType="text/html; charset=windows-31j"
pageEncoding="windows-31j"%>
<%@ page import="java.sql.*" %>
<%@ page import="java.util.*" %>
<%
request.setCharacterEncoding("Shift_JIS");
String number = request.getParameter("number");
String name = request.getParameter("name");
String etc = request.getParameter("etc");
Connection conn = null;
Statement state = null;
if (number != 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 = "insert into mytable values (" + number
+ ",'" + name + "','" + etc + "')";
state.execute(query);
pageContext.forward("index.jsp");
} catch(Exception ex){
ex.printStackTrace();
} finally {
try {
state.close();
conn.close();
}catch(Exception ex){}
}
}
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-31j">
<title>Add Record Action</title>
</head>
<body>
※このページは直接開いても無意味です。
</body>
</html>
データベースへの接続まではindex.jspと同じです。request.getParameterで送信されたフォームの内容を変数に取り出し、それをもとにクエリー文を作って送信します。
String query = "insert into mytable values (" + number + ",'"
+ name + "','" + etc + "')";
state.execute(query);
後はリダイレクトして作業終了です。接続の流れがわかれば、応用は簡単ですね。
index.jspにアクセスすると、レコードの一覧が表示される。 |
完成したら、実際にindex.jspにアクセスして、mytableのレコードが表示されるか確認してみましょう。また、フォームから送信してレコードを追加してみてください。追加したレコードが一覧に表示されたでしょうか。
今回はEmbedded方式でのアクセスを行ないましたが、クライアントとして接続することも可能です。Java DBについてもっと知りたい人は、Java DBよりも「Derby」で検索などしてみると、いろいろと情報が得られますよ。せっかく標準でこんなしっかりしたデータベースが内蔵されたのですから、使わない手はありません。ぜひ一度、試してみてください。
※なお、この記事の執筆後、Eclipse WTPもバージョンアップされ、本記事で説明している内容の多くが変更されています。以下の記事に、Eclipse WTP 2.0によるSQLデータベース接続の設定について解説していますので、そちらも参考にしてください。
「Eclipse EuropaでSQLサーバを利用する」