본문 바로가기

Server Oriented/Java & JSP

QueryRunner 로 PreparedStatement 다루는 방법

<%@ page import="org.apache.commons.dbutils.QueryRunner" %>

<%@ page import="org.apache.commons.dbutils.DbUtils" %>

<%@ page import="org.apache.commons.dbutils.MapHandler" %>

<%@ page import="org.apache.commons.dbutils.ResultSetHandler" %>


<%

    Connection   conn   = null; // 이 부분은 알아서.. ^^.

    Map          map    = null;

    StringBuffer query  = null;

    List         list   = null;

    List         params = null;

 

    try {

 

        conn                 = ...; // 커넥션 부분은 알아서..

        QueryRunner      qr  = new QueryRunner();

        ResultSetHandler rsh = new MapHandler(); // 하나의 데이터 단위를 Map 으로 한다는거

 

query = new StringBuffer();

        query.append("..."); // 쿼리..

 

        params               = new ArrayList();

        params.add(...);     // 파라미터

 

        map            = (Map)qr.query(conn, query.toString(), params.toArray(), rsh);

        //list           = (List)qr.query(conn, query.toString(), params.toArray(), rsh); // 데이타 row 가 2개 이상인 경우

        //for(int i=0,s=list.size(); i<s; i++){

        //  ..

        //  Map  map1 = (Map)list.get(i);

        //  ..

        //  if(map1!=null){ try{ map1.clear(); }finally{ map1=null; } }

        //}

 

    } catch(Exception e) {

    } finally {

        DbUtils.closeQuietly(conn);                                                      // 명시적 GC

        if(map!=null){ try{ map.clear(); }finally{ map=null; } }                         // 명시적 GC

        if(params!=null){ try{ params.clear(); }finally{ params=null; } }                // 명시적 GC

        //if(list!=null){ try{ list.clear(); }finally{ list=null; } }                      // 명시적 GC

        if(query!=null){ try{ query.delete(0,query.length()); }finally{ query=null; } }  // 명시적 GC

    }

 

%>