JavaWeb之DButils(二)使用DBCP实现数据库的连接池
2017-08-30 19:51
495 查看
一、BasicDataSource的使用例子
package com.shuhuadream.demo; import java.sql.Connection; import java.sql.SQLException; import org.apache.commons.dbcp.BasicDataSource; /** * 连接池jar包中,定义好一个类BasicDataSource * 实现了数据源的规范接口 javax.sql.DataSource * */ public class DataSoruceDemo { public static void main(String[] args) { //创建DataSource接口的实现类对象 //实现类,org.apache.commons.dbcp BasicDataSource dataSource = new BasicDataSource(); //连接数据库的四个基本信息,通过对象方法setXXX设置进来 dataSource.setDriverClassName("com.mysql.jdbc.Driver"); dataSource.setUrl("jdbc:mysql://localhost:3306/mybase"); dataSource.setUsername("root"); dataSource.setPassword("root"); try { //调用对象方法getConnection获取数据库的连接 Connection con = dataSource.getConnection(); System.out.println(con); } catch (SQLException e) { e.printStackTrace(); throw new RuntimeException("数据库连接失败"); } } }
二、使用DBCP实现数据库的连接池,并测试写好的工具类
1.工具类
package com.shuhuadream.demo; import javax.sql.DataSource; import org.apache.commons.dbcp.BasicDataSource; /** * 使用DBCP实现数据库的连接池 * 连接池配置,自定义类 * 最基本四项完整 * 对于数据库连接池其他配置,自定义 * * */ public class JDBCUtils { //创建BasicDataSource类对象 private static BasicDataSource datasource = new BasicDataSource(); //静态代码块,对象BasicDataSource对象中的配置 static{ //数据库连接信息(必须) datasource.setDriverClassName("com.mysql.jdbc.Driver"); datasource.setUrl("jdbc:mysql://localhost:3306/mybase"); datasource.setUsername("root"); datasource.setPassword("root"); //连接池中的连接数量配置(可选) datasource.setInitialSize(10);//初始化的连接数 datasource.setMaxActive(8);//最大连接数 datasource.setMaxIdle(5);//最大空闲连接 datasource.setMinIdle(1);//最小空闲连接 } //定义静态方法,返回BasicDataSource对象 public static DataSource getDataSource(){ return datasource; } }
2.测试代码
package com.shuhuadream.demo; import java.sql.SQLException; import java.util.List; import org.apache.commons.dbutils.QueryRunner; import org.apache.commons.dbutils.handlers.ArrayListHandler; /** * 测试写好的工具类 * ebc0 提供的是一个DataSource接口的数据源 * QueryRunner类构造方法,接收DataSource接口的实现类 * */ public class QueryRunnerDemo { public static void main(String[] args) { //insert(); select(); } //定义两个方法,实现数据库表的添加,数据表查询 //QueryRunner类对象,写在类成员位置 private static QueryRunner qr = new QueryRunner(JDBCUtils.getDataSource()); //数据表添加数据 public static void insert(){ String sql = "INSERT INTO sort(sname,sprice,sdesc) VALUES(?,?,?)"; Object[] params = {"水果",100.12,"刚刚上市的核桃"}; try { int row = qr.update(sql,params); System.out.println(row); } catch (SQLException e) { throw new RuntimeException(e+"数据添加失败"); } } //数据表查询 public static void select(){ String sql = "SELECT * FROM sort"; try { List<Object[]> list = qr.query(sql, new ArrayListHandler()); for (Object[] objs : list) { for(Object obj:objs){ System.out.print(obj+"\t"); } System.out.println(); } } catch (SQLException e) { e.printStackTrace(); throw new RuntimeException("数据查询失败"); } } }https://gitee.com/911711054/DBUtils
三、使用DBCP实现数据库的连接池(采用配置文件的方式)
1.配置文件dbcpconfig.properties
#配置链接driverClassName=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/myscool
username=root
password=root
#初始化链接
initialSize=10
#最大链接数量
maxActive=50
#最大空闲链接
maxIdle=20
#最小空闲链接
minIdle=5
#超时等待时间
maxWait=60000
#dbcp链接的属性
connectionProperties=useUnicode=true;characterEncodeing=UTF8
#指定由链接池所创建的链接的自动提交
defaultAutoCommit=true
#指定由链接池所创建的链接的只读
defaultReadOnly=
#指定由链接池所创建的链接的事务级别:READ_UNCOMMITTED,READ_COMMITTED,REPEATABLE_READ,SERIALIZABLE
defaultTransactionIsolation=READ_UNCOMMITTED
2.实现代码
package com.sh.dbcp;import java.io.IOException;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Properties;
import org.apache.commons.dbcp2.BasicDataSource;
import org.apache.commons.dbcp2.BasicDataSourceFactory;
/**
* 使用DBCP实现数据库连接
*
*/
public class DBCPDBUtils {
static Connection conn = null;
static{
try {
//读取配置文件
Properties properties = new Properties();
InputStream is = DBCPDBUtils.class.getClassLoader().getResourceAsStream("dbcpconfig.properties");
properties.load(is);
BasicDataSource bds = BasicDataSourceFactory.createDataSource(properties);
conn = bds.getConnection();
} catch (IOException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
}
public static Connection getConnection() {
return conn;
}
//释放资源
public static void release(Connection conn,Statement stmt,ResultSet rs){
if(rs!=null){
try {
rs.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if(stmt!=null){
try {
stmt.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if(conn!=null){
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
相关文章推荐
- JavaWeb之DButils(三)使用C3P0实现数据库的连接池
- Java 使用 DBCP mysql 连接池 做数据库操作
- JavaWeb之DButils(四)使用DBUtils实现增删查改
- JAVAWEB开发之Tomcat内置连接池的配置和使用、DbUtils的使用详解和案例、以及元数据详解
- JAVAWEB开发之事务详解(mysql与JDBC下使用方法、事务的特性、锁机制)和连接池的详细使用(dbcp以c3p0)
- 使用JAVA语言中的addBatch和executeBatch()实现数据批处理插入数据库
- 使用Java在Web上实现简易干特图之四
- 使用Java在Web上实现简易干特图之三
- 使用Java在Web上实现简易干特图之二
- 使用Java在Web上实现简易干特图之六
- All About JAVA 关于数据库ORACLE驱动包中OracleConnectionPoolDataSource连接池的使用方法
- 如何编写出高效的数据库连接池(附带完整代码C#和Java实现)
- 使用 Java 实现 Comet 风格的 Web 应用
- Linux平台,使用JavaComm3 API及SMSLib项目实现在Web Application中发送手机短信的功能
- 【转载】使用 Java 实现 Comet 风格的 Web 应用
- 使用 Java 实现 Comet 风格的 Web 应用
- 实现高效的数据库连接池(附带完整代码C#和Java实现)(转)
- 使用Java在Web上实现简易干特图之一
- 使用 Java 实现 Comet 风格的 Web 应用
- 使用Java在Web上实现简易干特图之五