连接池dbcp

DBCP:apache组织

使用步骤:
  1.导入jar包(commons-dbcp-1.4.jar和commons-pool-1.5.6.jar、commons-logging-1.2.jar)
  2.使用api

a.硬编码
  //创建连接池
  BasicDataSource ds = new BasicDataSource();

  //配置信息
  ds.setDriverClassName("com.mysql.jdbc.Driver");
  ds.setUrl("jdbc:mysql:///day07");
  ds.setUsername("root");
  ds.setPassword("1234");

代码展示:

  1.创建一个项目DataSourse,创建一个包com.dbcp.hjh

  2.在包下创建一个类DBCPTest1.java

  3.新建一个lib用来存放jar包(commons-dbcp-1.4.jar    commons-pool-1.5.6.jar   commons-logging-1.2.jar),导入后buildpat

代码运行之前数据库数据如下:

java代码如下:

JDBCUtil.java代码:

package com.util.hjh;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement; public class JDBCUtil {
final static String driver = "com.mysql.jdbc.Driver";
final static String url = "jdbc:mysql://localhost/hejh?useUnicode=true&characterEncoding=UTF-8";
final static String user = "root";
final static String password = "root"; Connection conn = null;
PreparedStatement ps = null;
Statement st = null;
ResultSet rs = null; /**获取连接*/
public static Connection getConnection() throws SQLException {
Connection conn = null;
try {
//注册驱动
Class.forName(driver);
//获取连接
conn = DriverManager.getConnection(url, user, password);
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
return conn;
} /**关闭资源closeResourse(conn,st)*/
public static void closeResourse(Connection conn,Statement st) {
try {
if(st!=null) {
st.close();
}else {
st = null;
}
} catch (SQLException e) {
e.printStackTrace();
}
try {
if(conn!=null) {
conn.close();
}else {
conn = null;
}
} catch (SQLException e) {
e.printStackTrace();
}
} /**关闭资源closeResourse(conn,ps)*/
public static void closeResourse(Connection conn,PreparedStatement ps) {
try {
if(ps!=null) {
ps.close();
}else {
ps = null;
}
} catch (SQLException e) {
e.printStackTrace();
}
try {
if(conn!=null) {
conn.close();
}else {
conn = null;
}
} catch (SQLException e) {
e.printStackTrace();
}
}
/**关闭资源closeResourse(rs)*/
public static void closeResourse(ResultSet rs) {
try {
if(rs!=null) {
rs.close();
}else {
rs = null;
}
} catch (SQLException e) {
e.printStackTrace();
}finally { }
}
}

DBCPTest1.java代码如下:

package com.dbcp.hjh;

import java.sql.Connection;
import java.sql.PreparedStatement;import org.apache.commons.dbcp2.BasicDataSource;
import org.junit.Test;
import com.util.hjh.JDBCUtil; public class DBCPTest1 { @Test
public void test() throws Exception {
//创建连接池
BasicDataSource ds = new BasicDataSource(); //配置信息
ds.setDriverClassName("com.mysql.jdbc.Driver");
ds.setUrl("jdbc:mysql://localhost/jdbc");
ds.setUsername("root");
ds.setPassword("root"); //连接数据库操作
Connection conn = ds.getConnection();
String sql = "insert into student values(?,?,?)";
PreparedStatement ps= conn.prepareStatement(sql);
//设置参数
ps.setInt(1, 10);
ps.setString(2, "yz");
ps.setInt(3, 95); int i = ps.executeUpdate();
System.out.println("插入了"+i+"行数据"); //关闭资源
JDBCUtil.closeResourse(conn, ps);
}
}

代码运行后数据库数据显示为:在jdbc数据库中student表,新增了一条id为10的数据

b.配置文件
  实现编写一个properties文件
  //存放配置文件
  Properties prop = new Properties();
  prop.load(new FileInputStream("src/dbcp.properties"));
  //设置
  //prop.setProperty("driverClassName", "com.mysql.jdbc.Driver");

  //创建连接池
  DataSource ds = new BasicDataSourceFactory().createDataSource(prop);

代码介绍:

  1.创建一个项目DataSourse,创建一个包com.dbcp.hjh

  2.在包下创建一个类DBCPTest2.java

  3.新建一个lib用来存放jar包(commons-dbcp-1.4.jar    commons-pool-1.5.6.jar   commons-logging-1.2.jar),导入后buildpat

  4.新建一个配置文件dbcp.properties

dbcp.properties内容:

driverClassName=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost/jdbc
username=root
password=root

工具类JDBCUtil.java源码如下:

package com.util.hjh;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement; public class JDBCUtil {
final static String driver = "com.mysql.jdbc.Driver";
final static String url = "jdbc:mysql://localhost/hejh?useUnicode=true&characterEncoding=UTF-8";
final static String user = "root";
final static String password = "root"; Connection conn = null;
PreparedStatement ps = null;
Statement st = null;
ResultSet rs = null; /**获取连接*/
public static Connection getConnection() throws SQLException {
Connection conn = null;
try {
//注册驱动
Class.forName(driver);
//获取连接
conn = DriverManager.getConnection(url, user, password);
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
return conn;
} /**关闭资源closeResourse(conn,st)*/
public static void closeResourse(Connection conn,Statement st) {
try {
if(st!=null) {
st.close();
}else {
st = null;
}
} catch (SQLException e) {
e.printStackTrace();
}
try {
if(conn!=null) {
conn.close();
}else {
conn = null;
}
} catch (SQLException e) {
e.printStackTrace();
}
} /**关闭资源closeResourse(conn,ps)*/
public static void closeResourse(Connection conn,PreparedStatement ps) {
try {
if(ps!=null) {
ps.close();
}else {
ps = null;
}
} catch (SQLException e) {
e.printStackTrace();
}
try {
if(conn!=null) {
conn.close();
}else {
conn = null;
}
} catch (SQLException e) {
e.printStackTrace();
}
}
/**关闭资源closeResourse(rs)*/
public static void closeResourse(ResultSet rs) {
try {
if(rs!=null) {
rs.close();
}else {
rs = null;
}
} catch (SQLException e) {
e.printStackTrace();
}finally { }
}
}

DBCPTest2.java源码如下:

package com.dbcp.hjh;

import java.io.FileInputStream;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.util.Properties;
import javax.sql.DataSource;
import org.apache.commons.dbcp2.BasicDataSourceFactory;
import org.junit.Test;
import com.util.hjh.JDBCUtil; public class DBCPTest2 { @Test
public void test() throws Exception { //存放配置文件
Properties pp = new Properties();
pp.load(new FileInputStream("src/dbcp.properties")); //创建连接池
DataSource ds = new BasicDataSourceFactory().createDataSource(pp); Connection conn = ds.getConnection();
String sql = "insert into student values(?,?,?)";
PreparedStatement ps = conn.prepareStatement(sql);
ps.setInt(1, 5);
ps.setString(2, "zys");
ps.setInt(3, 88);
int i = ps.executeUpdate();
System.out.println("插入了"+i+"条数据"); //释放资源
JDBCUtil.closeResourse(conn, ps);
}
}

数据库数据显示为:

连接池dbcp的更多相关文章

  1. jdbc数据连接池dbcp要导入的jar包

    jdbc数据连接池dbcp要导入的jar包 只用导入commons-dbcp-x.y.z.jarcommons-pool-a.b.jar

  2. 连接池 DBCP c3p0以及分页的案例

    1. 连接池 思考: 程序中连接如何管理? 连接资源宝贵:需要对连接管理 连接: a) 操作数据库,创建连接 b) 操作结束,  关闭! 分析: 涉及频繁的连接的打开.关闭,影响程序的运行效率! 连接 ...

  3. java JDBC (八) 连接池 DBCP

    package cn.sasa.demo1; import javax.sql.DataSource; import org.apache.commons.dbcp2.BasicDataSource; ...

  4. 03 事务,连接池DBCP,C3P0,DBUtils

    事务 Transaction  其实指的一组操作,里面包含许多个单一的逻辑.只要有一个逻辑没有执行成功,那么都算失败. 所有的数据都回归到最初的状态(回滚) 事务的作用:为了确保逻辑的成功. 例子: ...

  5. 在jdbc基础上进阶一小步的C3p0 连接池(DBCP 不能读xml配置文件,已淘汰) 和DBUtils 中两个主要类QueryRunner和ResultSetHandler的使用

    首先看C3p0这个连接池,最大优势可以自动读取默认的配置文件 <?xml version="1.0" encoding="UTF-8"?> < ...

  6. 连接池dbcp pool

    -package cn.gdpe.pool; import java.io.InputStream;import java.sql.Connection;import java.sql.Prepare ...

  7. DBCP、c3p0、Druid三大连接池区别

    DBCP.c3p0.Druid三大连接池区别 一.连接池优势 如果一个项目中如果需要多个连接,如果一直获取连接,断开连接,这样比较浪费资源: 如果创建一个池,用池来管理Connection,这样就可以 ...

  8. 一次dbcp和Hikaricp连接池比较联想到的线程池

    最近在测试连接池dbcp和Hikaricp速度时,为了弄清楚Hikaricp速度优势的原因,阅读了二者的源码,源码不是很难,类也没有多少,联想到很多知识,现在来总结一下.

  9. Java连接池详解

    于共享资源,有一个很著名的设计模式:资源池(Resource Pool).该模式正是为了解决资源的频繁分配﹑释放所造成的问题.为解决我们的问题,可以采用数据库连接池技术.数据库连接池的基本思想就是为数 ...

随机推荐

  1. CentOS 6.5 Apache+SVN配置

    yum -y install subversion #安装SVN svnserve -- version #查看svn版本信息确定是否安装 yum -y install httpd #安装Apache ...

  2. tomcat文件目录结构及功能介绍

    tomcat-7.0.50解压版,主目录一览: 我们可以看到主目录下有bin,conf,lib,logs,temp,webapps,work 7个文件夹,下面对他们分别进行介绍: 如下介绍: bin目 ...

  3. 2019-9-2-win10-uwp-截图-获取屏幕显示界面保存图片

    title author date CreateTime categories win10 uwp 截图 获取屏幕显示界面保存图片 lindexi 2019-09-02 12:57:38 +0800 ...

  4. mongodb 使用常见问题汇总(主要是集群搭建)

    1 安装 请使用官方推荐的教程 https://docs.mongodb.com/manual/tutorial/install-mongodb-on-ubuntu/ 2 远程访问失败: 操作系统是u ...

  5. Django项目:CRM(客户关系管理系统)--23--15PerfectCRM实现King_admin多条件过滤

    登陆密码设置参考 http://www.cnblogs.com/ujq3/p/8553784.html list_filter = ('source','consultant','consult_co ...

  6. c#还有一点不太明白,既然开启了线程为何还要委托呢?

    2013-07-15 09:33threadroc | 浏览 1611 次 既然开启了线程为何还要委托呢?,开启线程本身不就是委托吗?为何委托要显示声明呢?Thread thread = new Th ...

  7. spring四种依赖注入方式(转)

    spring四种依赖注入方式!! 平常的java开发中,程序员在某个类中需要依赖其它类的方法,则通常是new一个依赖类再调用类实例的方法,这种开发存在的问题是new的类实例不好统一管理,spring提 ...

  8. Ubuntu 16.04 LTS安装Docker最新版

    一.安装Docker的先决条件 1.运行64位CPU构架的计算机(目前只能是x86_64和amd64),请注意,Docker目前不支持32位CPU.2.运行Linux 3.8或更高版本内核.一些老版本 ...

  9. fastjson map转json

    Map map = new HashMap(); map.put("name", "老三"); map.put("age", 12); St ...

  10. 使用Spring Data Redis时,遇到的几个问题

    需求: 1,保存一个key-value形式的结构到redis 2,把一个对象保存成hash形式的结构到redis 代码如下: // 保存key-value值         pushFrequency ...