DBCP连接:
import java.io.*;
import java.sql.*;
import java.util.*;
import javax.sql.*;
import org.apache.commons.dbcp.BasicDataSourceFactory;
import org.junit.Test;
public class TestDBCP {
//1.导入3个包https://blog.youkuaiyun.com/json_ligege/article/details/51969025
//2.创建配置文件(在工程下面创建一个文件夹(config),
//然后创建配置文件dbcp.properties)
@Test
public void get() throws Exception{
Properties pro=new Properties();//获取properties文件的必须步骤
//pro.load(类名.class.)
pro.load(new FileInputStream("config\\dbcp.properties"));//读取连接池配置信息
DataSource ds=BasicDataSourceFactory.createDataSource(pro);
Connection con=ds.getConnection();//获取连接
if(con!=null){
System.out.println("success");
}else{
System.out.println("f");
}
PreparedStatement ps=con.prepareStatement("select * from info1");//获取sql语句
ResultSet rs=ps.executeQuery();//执行sql语句
System.out.println("id\t name\t age");
while(rs.next()){
System.out.print(rs.getInt("id")+"\t");
System.out.print(rs.getString("name")+"\t");
System.out.println(rs.getInt("age")+"\t");
}
rs.close();
ps.close();
con.close();
}
}
dbcp.properties文件:
########DBCP配置文件##########
#驱动名
driverClassName=com.mysql.jdbc.Driver
#url
url=jdbc:mysql://127.0.0.1:3306/students
#用户名
username=root
#密码
password=root
#初试连接数
initialSize=30
#最大活跃数
maxTotal=30
#最大idle数
maxIdle=10
#最小idle数
minIdle=5
#最长等待时间(毫秒)
maxWaitMillis=1000
#程序中的连接不使用后是否被连接池回收(该版本要使用removeAbandonedOnMaintenance和removeAbandonedOnBorrow)
#removeAbandoned=true
removeAbandonedOnMaintenance=true
removeAbandonedOnBorrow=true
#连接在所指定的秒数内未使用才会被删除(秒)(为配合测试程序才配置为1秒)
removeAbandonedTimeout=1
C3P0连接:
package server;
import java.sql.*;
import com.mchange.v2.c3p0.ComboPooledDataSource;
public class JdbcUtils {
//1、导包:c3p0-0.9.2.1.jar
//2、在src下面新建c3p0-config.xml,默认加载 src 下面 c3p0-config.xml 加载
private static ComboPooledDataSource ds = new ComboPooledDataSource();
// 创建连接
public static Connection getConnection() throws SQLException {
return ds.getConnection();
}
public static void close(Connection conn, PreparedStatement stmt) {
try {
if (stmt != null) {
stmt.close();
stmt = null;// gc 一个变量被赋值为 null, 垃圾回收机制 会优先处理这些对象。
}
} catch (SQLException e) {
e.printStackTrace();
}
try {
if (conn != null) {
conn.close();
conn = null;// gc 一个变量被赋值为 null, 垃圾回收机制会优先处理这些对象。
}
} catch (SQLException e) {
e.printStackTrace();
}
}
public static void close(Connection conn, PreparedStatement stmt, ResultSet rs) {
// 6.关闭连接(后打开的先关闭)
try {
if (rs != null) {
rs.close();
rs = null;// gc 一个变量被赋值为 null, 垃圾回收机制会优先处理这些对象。
}
} catch (SQLException e) {
e.printStackTrace();
}
try {
if (stmt != null) {
stmt.close();
stmt = null;// gc 一个变量被赋值为 null, 垃圾回收机制 会优先处理这些对象。
}
} catch (SQLException e) {
e.printStackTrace();
}
try {
if (conn != null) {
conn.close();
conn = null;// gc 一个变量被赋值为 null, 垃圾回收机制 会优先处理这些对象。
}
} catch (SQLException e) {
e.printStackTrace();
}
}
}
c3p0-config.xml:
<?xml version="1.0" encoding="UTF-8"?>
<c3p0-config>
<!-- 我们希望在配置文件中,出现链接的参数信息 -->
<default-config>
<!-- name 属性定义 链接参数的 key 标签的内容 代表值-->
<property name="driverClass">com.mysql.jdbc.Driver</property>
<property name="jdbcUrl">jdbc:mysql:///dangdang</property>
<property name="user">root</property>
<property name="password">root</property>
<!-- 连接池参数 -->
<property name="initialPoolSize">5</property>
<property name="maxPoolSize">10</property>
<property name="checkoutTimeout">3000</property>
</default-config>
</c3p0-config>