・JSPから直接データベースにアクセスすることはできない
・データベースにアクセスを行うオリジナルクラスまたはBeanを作成し、
それをJSP側から使用することで間接的にデータベースにアクセスする。
例)
MyDBAccess.java
import java.sql.*;
public class MyDBAccess {
private String driver;
private String url;
private String user;
private String password;
private Connection connection;
private Statement statement;
private ResultSet resultset;
/**
* コンストラクタ
* @param driver ドライバー
* @param url URL
* @param user ユーザー名
* @param password パスワード
*/
public MyDBAccess(String driver, String
url, String user, String password) {
this.driver =
driver;
this.url = url;
this.user = user;
this.password
= password;
}
/**
* 引数なしのコンストラクタ
* 既定値を使用する
*/
public MyDBAccess() {
driver = "org.postgresql.Driver";
url = "jdbc:postgresql://localhost:5432/jspdb";
user = "postgres";
password = "";
}
/**
* データベースへの接続を行う
*/
public synchronized void open() throws
Exception {
Class.forName(driver);
connection = DriverManager.getConnection(url,
user, password);
statement = connection.createStatement();
}
/**
* SQL 文を実行した結果の ResultSet を返す
* @param sql SQL 文
*/
public ResultSet getResultSet(String sql)
throws Exception {
if ( statement.execute(sql)
) {
return statement.getResultSet();
}
return null;
}
/**
* SQL 文の実行
* @param sql SQL 文
*/
public void execute(String sql) throws
Exception {
statement.execute(sql);
}
/**
* データベースへのコネクションのクローズ
*/
public synchronized void close() throws
Exception {
if ( resultset
!= null ) resultset.close();
if ( statement
!= null ) statement.close();
if ( connection
!= null ) connection.close();
}
}
JSP側
<%@ page import="java.sql.*, atmarkit.MyDBAccess"
contentType="text/html; charset=euc-jp"
%>
<%
// 内容: データベースにアクセスする
// MyDBAccess のインスタンスを生成する
MyDBAccess db = new MyDBAccess();
// データベースへのアクセス
db.open();
// メンバーを取得
ResultSet rs = db.getResultSet("select * from member");
// メンバー一覧表示用のテーブル
String tableHTML = "<table border=1>";
tableHTML += "<tr bgcolor=\"000080\"><td><font color=\"white\">メンバーID</font></td>"
+ "<td><font color=\"white\">名前</font></td>"
+ "<td><font color=\"white\">カナ</font></td>";
// 取得された各結果に対しての処理
while(rs.next()) {
int id = rs.getInt("member_id"); // メンバーIDを取得
String name = rs.getString("name"); //
メンバー名を取得
String kana = rs.getString("kana"); //
メンバー名(カナ)を取得
// 文字コードを EUC_JP からUnicode へ変換
name = new String(name.getBytes("8859_1"),
"EUC_JP");
kana = new String(kana.getBytes("8859_1"),
"EUC_JP");
// テーブル用HTMLを作成
tableHTML += "<tr><td align=\"right\">"
+ id + "</td>"
+ "<td>" + name + "</td><td>" + kana + "</td></tr>";
}
tableHTML += "</table>";
// データベースへのコネクションを閉じる
db.close();
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head><title>データベースへのアクセス</title></head>
<body>
<p>-- データベースへのアクセス --</p>
<p>
<b>メンバーの一覧</b><br>
<%= tableHTML %>
</p>
</body>
</html>

データベースと連携する
