データベースコネクションサーブレット
アットマーク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();
%>