JSPでDBアクセス(データベースアクセス)

・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>
データベースと連携する
タイトルとURLをコピーしました