通用的DAO类

import java.util.*;
import java.sql.*;
import javax.servlet.jsp.jstl.sql.*;

public class SQLCommandBean {
    private Connection conn;
    private String sqlValue;
    private List values;
   
    //设定连接类
    public void setConn(Connection conn) {
        this.conn = conn;
    }
    //设定sql语句
    public void setSqlValue(String sqlValue) {
        this.sqlValue = sqlValue;
    }
    //设定sql语句的参数
    public void setValues(List values) {
        this.values = values;
    }

  
    //执行查询
    public Result executeQuery() throws SQLException{
        Result result=null;
        ResultSet rs=null;
        PreparedStatement pstmt=null;
        Statement stmt=null;
        try{
            if(values!=null&&values.size()>0)
            {
                pstmt=conn.prepareStatement(sqlValue);
                setValues(pstmt,values);
                rs=pstmt.executeQuery();
            }
            else
            {
                stmt=conn.createStatement();
                rs=stmt.executeQuery(sqlValue);
            }
            result=ResultSupport.toResult(rs);
            }
        finally{
      
            if(rs!=null)
            {
                try{rs.close();}catch(SQLException e){}
            }
            if(stmt!=null)
            {
                try{stmt.close();}catch(SQLException e){}
            }
        
            if(pstmt!=null)
            {
                try{pstmt.close();}catch(SQLException e){}
            }
        }
        return result;
    }
  
    //执行Update语句
    public int executeUpdate() throws SQLException{
        int noOfRows=0;
        ResultSet rs=null;
        PreparedStatement pstmt=null;
        Statement stmt=null;
        try
        {
            if(values!=null&&values.size()>0)
            {
                pstmt=conn.prepareStatement(sqlValue);
                setValues(pstmt,values);
                noOfRows=pstmt.executeUpdate();
            }
            else
            {
                stmt=conn.createStatement();
                noOfRows=stmt.executeUpdate(sqlValue);
            }
        }finally
        {

            if(rs!=null)
            {
                try{rs.close();}catch(SQLException e){}
            }
            if(stmt!=null)
            {
                try{stmt.close();}catch(SQLException e){}
            }
        
            if(pstmt!=null)
            {
                try{pstmt.close();}catch(SQLException e){}
            }
        }
        return noOfRows;
    }
    //设定语句参数
    private void setValues(PreparedStatement pstmt,List values)
    throws SQLException {
        for(int i=0;i<values.size();i++)
        {
            Object v=values.get(i);
            pstmt.setObject(i+1, v);
        }
    }
  
}

你可能感兴趣的:(DAO,sql,jsp,servlet)