我爱编程JavaWeb学习程序员

数据库连接池

2018-05-28  本文已影响13人  幻影翔

连接池的意义

两种优秀的连接池技术

jar包

DPCP

C3P0

DPCP

//硬编码的方式实现
@Test
public void testDPCP() throws SQLException {
    //获取DPCP核心类
    BasicDataSource dataSource = new BasicDataSource();
    //设置连接池
    dataSource.setInitialSize(3);   //初始化连接数
    dataSource.setMaxActive(6);     //最大连接数
    dataSource.setMaxIdle(300);     //最大空闲时间
    //设置连接的参数  连接字段,驱动,连接用户,密码
      String basename="root";
      String password ="root";
      String url = "jdbc:mysql:///JavaWeb?useUnicode=true&characterEncoding=utf8";

    dataSource.setDriverClassName("com.mysql.jdbc.Driver");
    dataSource.setUrl(url);
    dataSource.setUsername(basename);
    dataSource.setPassword(password);
    //获取连接
    Connection conn = dataSource.getConnection();
    conn.prepareStatement("delete from admin where id = 3").executeUpdate();
    //关闭流
    conn.close();

}

//加载配置文件创建
@Test
public void testDPCP2() throws Exception {
    Properties prop = new Properties();
    //加载文件输入流
   InputStream inputStream = this.getClass().getClassLoader().getResourceAsStream("db.properties");
   //加载配置文件
    prop.load(inputStream);
    //创建DataSource
    DataSource dataSource = BasicDataSourceFactory.createDataSource(prop);

    //创建连接
    Connection conn = dataSource.getConnection();
    conn.prepareStatement("update  admin set userName='tom' where id = 6").executeUpdate();

    //关闭流
    conn.close();
}

C3P0

//加载配置文件
@Test
public void C3P0Xml() throws SQLException {
    //加载核心工具类
    ComboPooledDataSource dataSource = new ComboPooledDataSource("myApp");
    //创建连接
    Connection conn = dataSource.getConnection();
    PreparedStatement pstmt=null;
    for(int i=1;i<11;i++){
        String sql = "insert into admin(userName,pwd) values (?,?)";
        pstmt = conn.prepareStatement(sql);
        pstmt.setString(1,"jack"+i);
        pstmt.setString(2,"jack006");
        pstmt.executeUpdate();
    }
    //关闭流
    pstmt.close();
    conn.close();
}
c3p0的配置文件
上一篇 下一篇

猜你喜欢

热点阅读