dbcp数据库连接池简单例子

来源:互联网 发布:windows是谁开发的 编辑:程序博客网 时间:2024/03/29 02:54

首先,编写数据库配置文件,命名为dbcp.properties。

driverClassName=com.microsoft.sqlserver.jdbc.SQLServerDriverurl=jdbc:sqlserver://127.0.0.1:1433username=stupassword=123initialSize=10maxActive=50maxIdle=20minIdle=5maxWait=60000characterEncoding=UTF8defaultAutoCommit=true

该文件的编写遵循properties文件的编写方式,采用名值对的形式。比较重要的参数包括:driverClassName指明加载的连接驱动器的全包名。url为访问数据库的url,username和password为访问数据库的用户名和密码。initialSize为初始连接池的大小,其他参数含义可以根据英文单词猜出。

其次,编写使用该类的工具类。

import org.apache.commons.dbcp2.BasicDataSourceFactory;import javax.sql.DataSource;import java.sql.ResultSet;import java.sql.Statement;import java.io.InputStream;import java.sql.Connection;import java.sql.SQLException;import java.util.Properties;/** * Created by dan on 2015/12/2. */public class DbcpJdbcUtil {    private static DataSource ds = null;    static {        try{            InputStream in = DbcpJdbcUtil.class.getClassLoader().getResourceAsStream("dbcp.properties");            Properties prop = new Properties();            prop.load(in);            ds = BasicDataSourceFactory.createDataSource(prop);        }catch(Exception e){            e.printStackTrace();        }    }    public static Connection getConnection() throws SQLException{            return ds.getConnection();    }    public static void release(Connection conn, Statement st, ResultSet rs){        if (rs != null){            try{                rs.close();            }catch(Exception e){                e.printStackTrace();            }        }        if (st != null){            try{                st.close();            }catch(Exception e){                e.printStackTrace();            }        }        if (conn != null){            try{                conn.close();            }catch(Exception e){                e.printStackTrace();            }        }    }}

需要在类路径中加载的包包括:commons-dbcp2-2.1.1.jar

在该类中,使用类加载的方式加载配置文件,注意配置文件的名字一定要与刚刚写的properties一致。
使用类加载的方式,一定要注意properties在src目录的根目录下,不是类的包中。
在整个项目中,一般只申请一个连接池,所以该类的连接池对象被声明为类变量,调用该类变量,获取连接的方法getConnection被声明为类方法。
release统一负责释放所有与数据库相关的连接资源,其中connection的释放实际上是将conncetion对象重新放回到连接池中。

当建立完成上述类后,就可以通过调用getConnection方法获取链接。

import java.sql.Connection;import java.sql.ResultSet;import java.sql.SQLException;import java.sql.Statement;public class Main {    public static void main(String[] args) {        try {            //Connection conn = JdbcUtil.getConnection();            Connection conn = DbcpJdbcUtil.getConnection();            //Connection conn = C3P0JdbcUtil.getConnection();            Statement stmt = conn.createStatement();            String sql = "select sn,sex from s";            ResultSet rs = stmt.executeQuery(sql);            while(rs.next()){                System.out.println(rs.getString("sn") + " " + rs.getString("sex"));            }            C3P0JdbcUtil.release(conn, stmt, rs);        } catch (SQLException e) {            e.printStackTrace();        }    }}
0 0
原创粉丝点击