データベースコネクションサーブレット

アットマークITから抜粋


import java.sql.*;
 
public class DBAccess {
 
 private String driver;
 private String url;
 private String user;
 private String password;
 private Connection connection;
 private Statement statement;
 private ResultSet resultset;
 
 public DBAccess(String driver, String url, String user, String password){
  this.driver = driver;
  this.url = url;
  this.user = user;
  this.password = password;
 }
 
 public DBAccess(){
 //デフォルトの接続設定
  driver = "org.postgresql.Driver";
  url = "jdbc:postgresql://localhost/home";
  user = "scoutroll";
  password = "scoutroll";
 }
 
 public synchronized void open() throws Exception{
  Class.forName(driver);
  connection = DriverManager.getConnection(url,user,password);
  statement = connection.createStatement();
 }
 
 public ResultSet getResultSet(String sql) throws Exception{
  if(statement.execute(sql)){
   return statement.getResultSet();
  }
  return null;
 }
 
 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.*,DBAccess" %>
<%
 
DBAccess db = new DBAccess(); //デフォルトの設定を使う場合
DBAccess db = new DBAccess(driver,url,user,password); //違う場合
 
db.open();
String sql = "" ;
sql = "select * from Table";
ResultSet rs =db.getResultSet(sql);
 
//javaの場合、レコードセットを取ってきた段階ではポインタが0を
//示しているため、必ずrs.next()をしなければならない
//ifやwhileの条件でrs.next()を指定している場合書かなくていい。
 
if(!rs.next()){
//レコードがないときの処理
}
 
sql = "insert into Table(id,pass) values('id','pass')";
db.execute(sql);
 
db.close();
 
%>