dbcp数据库连接池简单例子

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

driverClassName=com.microsoft.sqlserver.jdbc.SQLServerDriver
url=jdbc:sqlserver://127.0.0.1:1433
username=stu
password=123

initialSize=10
maxActive=50
maxIdle=20

minIdle=5

maxWait=60000

characterEncoding=UTF8

defaultAutoCommit=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
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值