JDBC工具类小结

来源:互联网 发布:手机优先网络列表设置 编辑:程序博客网 时间:2024/05/15 07:46

学习过程中我们经常需要利用jdbcUtils和c3p0连接池结合来操作数据库,由于数据操作的基本步骤大体一致,所以我们会自己写一个工具类来提供Datasource,Connection,释放资源等操作,再次做一个整理。

package cn.wang.customer.utils;import java.sql.Connection;import java.sql.PreparedStatement;import java.sql.ResultSet;import java.sql.SQLException;import java.sql.Statement;import javax.sql.DataSource;import com.mchange.v2.c3p0.ComboPooledDataSource;public class JDBCUtils {    /**     * JDBC工具类 1.提供连接池 2.释放资源,根据CRUD的实际情况释放资源方法需要重载     *      */    // 利用c3p0连接池,连接池在应用中应该是唯一的,所以用静态的    private static DataSource dataSource = new ComboPooledDataSource();    /**     * 工具类提供,连接池对象给 QueryRunner(DataSource dataSourece) 根据实际情况:需要事物管理的就是 无参构造     * 不需要事物管理的就是有参构造     *      * @return     */    public static DataSource getDataSource() {// 提供一个静态的方法获取连接池        return dataSource;    }    /**     * 当需要手动控制事物的时候,需要把conn当做参数传递给方法, 所以这边提供一个方法,获取conn;     *      * @return     */    public static Connection getConnection() {        try {            return dataSource.getConnection();        } catch (SQLException e) {            // TODO Auto-generated catch block            e.printStackTrace();            throw new RuntimeException(e + "获取连接池失败");        }    }    /**     * 提供多个重载的方法释放资源,根据实际情况调用     *      */    public static void close(Connection conn) {// 事物管理的时候只可以释放        try {            if (conn != null) {                conn.close();            }        } catch (SQLException e) {            e.printStackTrace();        } finally {            conn = null;        }    }    public static void close(Connection conn, Statement stat) {        try {            if (stat != null) {                stat.close();            }        } catch (SQLException e) {            e.printStackTrace();        } finally {            stat = null;// 代码规范            close(conn);        }    }    public static void close(Connection conn, Statement stat, ResultSet res) {        try {            if (res != null) {                res.close();            }        } catch (SQLException e) {            e.printStackTrace();        } finally {            res = null;            close(conn, stat);        }    }    public static void close(PreparedStatement pst) {        try {            if (pst != null) {                pst.close();            }        } catch (SQLException e) {            // TODO Auto-generated catch block            e.printStackTrace();        } finally {            pst = null;        }    }}
0 0
原创粉丝点击