首先需要导入c3p0架包:c3p0-0.9.5.5.jar
mchange-commoms-java-0.2.19.jar(你也可以使用其他版本)
导入jdbc架包:mysql-connector-java-5.1.47-bin.jar
在src下添加c3p0的配置文件名字为
c3p0-config.xml,具体配置内容如下(简单配置,更多参数配置可参考互联网):
<c3p0-config> <default-config> <!--连接参数--> <property name="driverClass">com.mysql.jdbc.Driver</property> <property name="jdbcUrl">jdbc:mysql://localhost:3306/py_db</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> <name-config name="otherc3p0"> </name-config> </c3p0-config>
直接来测试类
package Itheima;
import com.mchange.v2.c3p0.ComboPooledDataSource;
import javax.sql.DataSource;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public class DBpool {
public static void main(String[] args) throws SQLException {
//创建数据库连接池对象
DataSource ds=new ComboPooledDataSource();
//获取连接池对象,建立连接
Connection conn =ds.getConnection();
//sql查询语句
String sql="select * from py_tab";
//创建连接池
Statement statement=conn.createStatement();
ResultSet result=statement.executeQuery(sql);
while(result.next()){
int id =result.getInt("id");
String name1=result.getString("name");
int pass1 =result.getInt("password");
System.out.println(id+name1+pass1);
}
conn.close();
}
}
druid:
首先需要导入druid架包:druid-1.2.6.jar(你也可以使用其他版本)
导入jdbc架包:mysql-connector-java-5.1.47-bin.jar
在src下添加druid的配置文件名字为
druid.properties,具体配置内容如下(简单配置,更多参数配置可参考互联网)
driverClassName=“com.mysql.jdbc.driver”
url=“jdbc:mysql://127.0.0.1:3306/py_db”
username=root
password=root
initialSize=5
maxActive=10
maxWait=3000
简单测试一下:
package Durid;
/*
@作者:拾壹
@功能:实现druid线程池的实现
*/
import com.alibaba.druid.pool.DruidDataSourceFactory;
import javax.sql.DataSource;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.Properties;
public class DruidDemo {
public static void main(String[] args) throws Exception {
//导入druid架包
//导入properties配置文件到src下
//创建Properties对象
Properties pro=new Properties();
//引用配置文件
InputStream is=DruidDemo.class.getClassLoader().getResourceAsStream("druid.properties");
pro.load(is);
//创建连接池
DataSource ds= DruidDataSourceFactory.createDataSource(pro);
//建立连接池
Connection conn=ds.getConnection();
//执行sql语句
String sql="select * from py_tab";
Statement sta=conn.createStatement();
//返回结果
ResultSet result=sta.executeQuery(sql);
while (result.next()){
int id =result.getInt("id");
String name1=result.getString("name");
int pass1 =result.getInt("password");
System.out.println(id+name1+pass1);
}
//归还连接
conn.close();
}
}
注意为了减少调用数据库连接池代码的重复性(简单说就是想偷懒),我们可以创建一个工具类,里面包含了数据库连接、归还等方法,见如下代码:`
package utiles;
/*
@作者:拾壹
@功能:每次导入配置文件的步骤都一样,可以创建DruidUtil来简化代码重复率
*/
import com.alibaba.druid.pool.DruidDataSourceFactory;
import javax.sql.DataSource;
import java.io.IOException;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Properties;
public class DruidUtile {
//创建数据库连接池对象
private static DataSource ds;
static {
try {
//创建Propertoes配置对象
Properties pro = new Properties();
//导入配置文件
pro.load(DruidUtile.class.getClassLoader().getResourceAsStream("druid.properties"));
//创建数据库连接池
ds = DruidDataSourceFactory.createDataSource(pro);
} catch (IOException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
}
//构造连接方法
public static Connection getConnection() throws SQLException {
return ds.getConnection();
}
//构造归还连接方法
public static void close(Statement stmt,Connection con) throws SQLException {
/* if(stmt!=null){
stmt.close();
}
if(con!=null){
con.close();
}*/
close(stmt,con,null);
}
public static void close(Statement stmt, Connection con, ResultSet res) throws SQLException {
if(res!=null){
res.close();
}
if(stmt!=null){
stmt.close();
}
if(con!=null){
con.close();
}
}
//
public static DataSource getDataSource(){
return ds;
}
}
测试
package Durid;
import utiles.DruidUtile;
import javax.sql.DataSource;
import java.io.IOException;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import static utiles.DruidUtile.close;
public class DruidPool {
public static void main(String[] args) throws IOException, SQLException {
DataSource ds = DruidUtile.getDataSource();
Connection con = ds.getConnection();
String sql="select * from py_tab";
Statement sta=con.createStatement();
ResultSet res= sta.executeQuery(sql);
while (res.next()){
int id =res.getInt("id");
String name1=res.getString("name");
int pass1 =res.getInt("password");
System.out.println(id+name1+pass1);
}
close(sta,con,res);
}
}