DBCP连接池

dbcp连接池

需要的架包
1.commons-dbcp.jar
2.commons-pool.jar
3.mysql-connector-java-5.0.8-bin.jar

DBCP相关配置:DBCP configuration
说明:
defaultAutoCommit: 对于事务是否 autoCommit, 默认值为 true
defaultReadOnly: 对于数据库是否只能读取, 默认值为 false
driverClassName:连接数据库所用的 JDBC Driver Class,
maxActive: 连接池的最大数据库连接数。设为0表示无限制,默认为8
maxIdle: 最大等待连接中的数量,设 0 为没有限制 (对象池中对象最大个数)
minIdle:对象池中对象最小个数
maxWait: 最大等待秒数, 单位为 ms, 超过时间会丟出错误信息
password: 登陆数据库所用的密码
url: 连接数据库的 URL
username: 登陆数据库所用的帐号
validationQuery: 验证连接是否成功,该选项用来验证数据库连接的有效性, SQL SELECT 指令至少要返回一行
removeAbandoned: 是否自我中断, 默认是 false
removeAbandonedTimeout: 几秒后会自我中断, removeAbandoned 必须为 true
logAbandoned: 是否记录中断事件, 默认为 false
minEvictableIdleTimeMillis:大于0 ,进行连接空闲时间判断,或为0,对空闲的连接不进行验证;默认30分钟
timeBetweenEvictionRunsMillis:失效检查线程运行时间间隔,如果小于等于0,不会启动检查线程,默认-1
testOnBorrow:取得对象时是否进行验证,检查对象是否有效,默认为false
testOnReturn:返回对象时是否进行验证,检查对象是否有效,默认为false
testWhileIdle:空闲时是否进行验证,检查对象是否有效,默认为false
initialSize:初始化线程数


一。通过直接配置数据库属性连接
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;


import org.apache.commons.dbcp.BasicDataSource;
import org.apache.commons.dbcp.DataSourceConnectionFactory;
class dbcputils {
	private static dbcputils dbcp=null;
	private BasicDataSource dbs=null;
	private DataSourceConnectionFactory dscf=null;
	public dbcputils(){
		if(dbs==null){
			dbs=new BasicDataSource();
			dbs.setUsername("root");
			dbs.setPassword("jarrem");
			dbs.setUrl("jdbc:mysql://127.0.0.1:3306/tang");
			dbs.setDriverClassName("com.mysql.jdbc.Driver");
			dbs.setMaxActive(11);
			dbs.setInitialSize(10);
			dbs.setMaxIdle(5);
			dbs.setMinIdle(3);
			dscf=new DataSourceConnectionFactory(dbs);
			System.out.println("初始化实例了");
		}
	}
	public dbcputils getInstance(){
		if(dbcp==null){  
			dbcp=new dbcputils();  
			System.out.println("getInstance初始化实例了");
			}
		return dbcp;
	}
	public Connection getConnection(){
		Connection connection=null;
				try {
				connection = dscf.createConnection();
				} catch (SQLException e) {
					// TODO Auto-generated catch block
					System.out.println("获取Connection失败!");
					e.printStackTrace();
				}
		return connection;
		}
	public static void main(String[] args){
	 dbcputils dp=new dbcputils();
	 long begin=System.currentTimeMillis();
	 			List list=new ArrayList();
		 		Connection connection = dp.getInstance().getConnection();
		 		try {
					PreparedStatement ps = connection.prepareStatement("select * from user;");
					ResultSet result = ps.executeQuery();
					while(result.next()){
						list.add(result);
						System.out.println(result.getString(1));
					}
					for(Object o:list){
						System.out.println(list.toString());
					}
					connection.close();
				} catch (SQLException e1) {
					e1.printStackTrace();
				}
	 
	long end=System.currentTimeMillis();
	System.out.println(end-begin);
	}
}


二.通过properties文件配置数据库
import java.io.FileInputStream;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Properties;
import javax.sql.DataSource;
import org.apache.commons.dbcp.BasicDataSource;
import org.apache.commons.dbcp.BasicDataSourceFactory;
import org.apache.commons.dbcp.DataSourceConnectionFactory;
public class dbcpPool {
	private BasicDataSource bds=null;
	private DataSourceConnectionFactory dscf=null;
	private Properties properties=null;
	private DataSource DataSource=null;
	private static Connection connection=null;
	public dbcpPool(){
		if(bds==null){
			bds=new BasicDataSource();
			properties=new Properties();
			FileInputStream in;
			try {
				//我这里使用的是绝对路径,根据自己文件位置修改
				in = new FileInputStream("C:\\Users\\lenovo\\Workspaces\\MyEclipse Professional 2014\\DatabaseConnectionPool\\src\\com\\tang\\dbpcPool2\\link.properties");
				properties.load(in);
					DataSource = BasicDataSourceFactory.createDataSource(properties);
					connection = DataSource.getConnection();
			} catch (Exception e) {
				e.printStackTrace();
			}
			
		}
	}
	public static void main(String args[]){
		try {
			new dbcpPool();
			PreparedStatement statement = connection.prepareStatement("select * from user;");
			ResultSet result = statement.executeQuery();
			while(result.next()){
				System.out.println(result.getString(1)+"    "+result.getString(2));
			}
		} catch (SQLException e) {
			e.printStackTrace();
		}
	}
}


  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
使用DBCP连接需要在配置文件中设置以下属性: 1. 驱动类名(driverClassName):数据库驱动程序的名称,例如com.mysql.jdbc.Driver。 2. 数据库连接URL(url):连接到数据库的URL,例如jdbc:mysql://localhost:3306/test。 3. 数据库用户名(username):连接到数据库所需的用户名。 4. 数据库密码(password):连接到数据库所需的密码。 5. 初始连接数(initialSize):连接在启动时创建的初始连接数。 6. 最小空闲连接数(minIdle):连接中保留的最小空闲连接数。 7. 最大活动连接数(maxActive):连接中同时可分配的最大活动连接数。 8. 最大等待时间(maxWait):等待连接分配连接的最长时间(以毫秒为单位)。 9. 连接名(poolName):连接的名称。 下面是一个示例配置文件: ```xml <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close"> <property name="driverClassName" value="com.mysql.jdbc.Driver" /> <property name="url" value="jdbc:mysql://localhost:3306/test" /> <property name="username" value="root" /> <property name="password" value="password" /> <property name="initialSize" value="5" /> <property name="minIdle" value="2" /> <property name="maxActive" value="20" /> <property name="maxWait" value="10000" /> <property name="poolPreparedStatements" value="true" /> <property name="maxOpenPreparedStatements" value="100" /> <property name="poolName" value="MyDBCP" /> </bean> ``` 在上面的配置中,我们使用了org.apache.commons.dbcp.BasicDataSource类,它是DBCP连接的实现类。我们设置了MySQL数据库的驱动程序名称、URL、用户名和密码。我们还设置了连接的一些属性,例如初始连接数、最小空闲连接数、最大活动连接数和最大等待时间。最后,我们指定了连接的名称为MyDBCP

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值