尚硅谷之JDBC

发布时间:2018年11月28日作者:yafei浏览次数:1,786

方式一:

示例代码:

步骤:

1、加入两个jar

DBCP数据库连接池的的jar:Commons-dbcp.jar

连接池实现的依赖库:Commons-pool.jar,如果不加这个,运行报如下异常

Exception in thread “main” java.lang.NoClassDefFoundError: org/apache/commons/pool/KeyedObjectPoolFactory

at com.jdbc.datasource.TestDBCP.main(TestDBCP.java:14)

Caused by: java.lang.ClassNotFoundException: org.apache.commons.pool.KeyedObjectPoolFactory

at java.net.URLClassLoader.findClass(Unknown Source)

at java.lang.ClassLoader.loadClass(Unknown Source)

at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)

at java.lang.ClassLoader.loadClass(Unknown Source)

… 1 more

2、编写代码

package com.jdbc.datasource;

import java.sql.Connection;

import java.sql.SQLException;

import org.apache.commons.dbcp.BasicDataSource;

public class TestDBCP {

public static void main(String[] args) throws SQLException {

//1.创建DBCP数据源(即连接池)

BasicDataSource ds = new BasicDataSource();

//2.设置数据源的必须属性

ds.setDriverClassName(“com.mysql.jdbc.Driver”);

ds.setUrl(“jdbc:mysql://localhost:3306/test”);

ds.setUsername(“root”);

ds.setPassword(“root”);

//3.设置数据源的可选属性

//(1)指定数据库连接池中初始化连接数的个数

ds.setInitialSize(10);

//(2)指定最大的连接数: 同一时刻可以同时向数据库申请的连接数

ds.setMaxActive(50);

//(3)在数据库连接池中保存的最少的空闲连接的数量

ds.setMinIdle(2);

//(4)等待数据库连接池分配连接的最长时间. 单位为毫秒. 超出该时间将抛出异常.

ds.setMaxWait(1000*5);

//4.从数据源中获取数据库连接

Connection conn = ds.getConnection();

System.out.println(conn);

}

}

测试超过连接数

package com.jdbc.datasource;

import java.sql.Connection;

import java.sql.SQLException;

import org.apache.commons.dbcp.BasicDataSource;

public class TestDBCP2 {

public static void main(String[] args) throws SQLException {

//1.创建DBCP数据源(即连接池)

BasicDataSource ds = new BasicDataSource();

//2.设置数据源的必须属性

ds.setDriverClassName(“com.mysql.jdbc.Driver”);

ds.setUrl(“jdbc:mysql://localhost:3306/test”);

ds.setUsername(“root”);

ds.setPassword(“root”);

//3.设置数据源的可选属性

//(1)指定数据库连接池中初始化连接数的个数

ds.setInitialSize(3);

//(2)指定最大的连接数: 同一时刻可以同时向数据库申请的连接数

ds.setMaxActive(5);

//(3)指定最小活跃的连接数: 在数据库连接池中保存的最少的空闲连接的数量

ds.setMinIdle(2);

//(4)等待数据库连接池分配连接的最长时间. 单位为毫秒. 超出该时间将抛出异常.

ds.setMaxWait(1000*5);

//4.从数据源中获取数据库连接

for(int i=0;i<6;i++){

Connection conn = ds.getConnection();

System.out.println(“获取第”+(i+1)+”个”+conn);

//这里没有关闭,即没有放回连接池

}

}

}

测试如果连接重复使用

package com.jdbc.datasource;

import java.sql.Connection;

import java.sql.SQLException;

import org.apache.commons.dbcp.BasicDataSource;

public class TestDBCP3 {

public static void main(String[] args) throws SQLException {

//1.创建DBCP数据源(即连接池)

BasicDataSource ds = new BasicDataSource();

//2.设置数据源的必须属性

ds.setDriverClassName(“com.mysql.jdbc.Driver”);

ds.setUrl(“jdbc:mysql://localhost:3306/test”);

ds.setUsername(“root”);

ds.setPassword(“root”);

//3.设置数据源的可选属性

//(1)指定数据库连接池中初始化连接数的个数

ds.setInitialSize(3);

//(2)指定最大的连接数: 同一时刻可以同时向数据库申请的连接数

ds.setMaxActive(5);

//(3)指定最小活跃的连接数: 在数据库连接池中保存的最少的空闲连接的数量

ds.setMinIdle(2);

//(4)等待数据库连接池分配连接的最长时间. 单位为毫秒. 超出该时间将抛出异常.

ds.setMaxWait(1000*5);

//4.从数据源中获取数据库连接

for(int i=0;i<10;i++){

new Thread(){

public void run(){

try {

Connection conn = ds.getConnection();

System.out.println(“获取1个”+conn);

Thread.sleep(3000);

//隔3秒换回去

conn.close();

} catch (Exception e) {

e.printStackTrace();

}

}

}.start();

}

}

}

 


上一篇:
下一篇:
相关课程

java培训 大数据培训 前端培训 UI/UE设计培训

关于尚硅谷
教育理念
名师团队
学员心声
资源下载
视频下载
资料下载
工具下载
加入我们
招聘岗位
岗位介绍
招贤纳师
联系我们
全国统一咨询电话:010-56253825
地址:北京市昌平区宏福科技园2号楼3层(北京校区)

深圳市宝安区西部硅谷大厦B座C区一层(深圳校区)

上海市松江区谷阳北路166号大江商厦6层(上海校区)

武汉市东湖高新开发区东湖网谷(武汉校区)

西安市高新区和发智能大厦(西安校区)