DbHelper 标准类

import java.io.*;
import java.sql.*;
import java.util.*;
import javax.servlet.jsp.jstl.sql.*;
public class DBHelper {
    
private String sql;    //要传入的sql语句   
public void setSql(String sql) {
    this.sql = sql;
}
   
private List sqlValues;  //sql语句的参数
public void setSqlValues(List sqlValues) {
    this.sqlValues = sqlValues;
}
private Connection con;  //连接对象
    public void setCon(Connection con) {
    this.con = con;
}
 
    public DBHelper(){
        this.con=getConnection();  //给Connection的对象赋初值
    }
     
    /**
     * 获取数据库连接
     * @return
     */
    private  Connection getConnection(){
  
        String driver_class=null;
        String driver_url=null;
        String database_user=null;
        String database_password=null;
        try {
            InputStream fis=this.getClass().getResourceAsStream("/db.properties");  //加载数据库配置文件到内存中
            Properties p=new Properties();
            p.load(fis);
             
            driver_class=p.getProperty("driver_class");      //获取数据库配置文件
            driver_url=p.getProperty("driver_url");
            database_user=p.getProperty("database_user");
            database_password=p.getProperty("database_password");
     
             
            Class.forName(driver_class);
            con=DriverManager.getConnection(driver_url,database_user,database_password);
             
             
        } catch (ClassNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (FileNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        return con;
    }
     
   
     
 
    /**
     * 关闭数据库
     * @param con
     * @param pst
     * @param rst
     */
    private  void closeAll(Connection con,PreparedStatement pst,ResultSet rst){
        if(rst!=null){
            try {
                rst.close();
            } catch (SQLException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
         
        if(pst!=null){
            try {
                pst.close();
            } catch (SQLException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
         
        if(con!=null){
            try {
                con.close();
            } catch (SQLException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
         
         
    }
     
    /**
     * 查找
     * @param sql
     * @param sqlValues
     * @return
     */
    public  Result executeQuery(){
        Result result=null;
        ResultSet rst=null;
        PreparedStatement pst=null;
        try {
         
            pst=con.prepareStatement(sql);
            if(sqlValues!=null&&sqlValues.size()>0){  //当sql语句中存在占位符时
                setSqlValues(pst,sqlValues);
            }
        rst=pst.executeQuery();
        result=ResultSupport.toResult(rst);  //一定要在关闭数据库之前完成转换
             
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }finally{
            this.closeAll(con, pst, rst);
        }
         
        return result;
    }
     
     
    /**
     * 增删改
     * @return
     */
    public int executeUpdate(){
        int result=-1;
        PreparedStatement pst=null;
        try {
            pst=con.prepareStatement(sql);
            if(sqlValues!=null&&sqlValues.size()>0){  //当sql语句中存在占位符时
                setSqlValues(pst,sqlValues);
            }
        result=pst.executeUpdate();
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }finally{
            this.closeAll(con, pst, null);
        }
     
         
        return result;
    }
     
     
     
    /**
     * 给sql语句中的占位符赋值
     * @param pst
     * @param sqlValues
     */
    private void setSqlValues(PreparedStatement pst,List sqlValues){
        for(int i=0;i<sqlValues.size();i++){
            try {
                pst.setObject(i+1,sqlValues.get(i));
            } catch (SQLException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
    }
}
原文地址:https://www.cnblogs.com/lx06/p/15737352.html