0.C3P0对DataSource的实现类
C3P0实现DataSource的类为ComboPooledDataSource
1、C3P0版JDBCUtil----C3P0Util
版本1
package pack03_c3p0;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import com.mchange.v2.c3p0.ComboPooledDataSource;
/*
* 1:创建连接池对象
* new ComboPooledDataSource();对象
* 2:需要给连接池指定四大信息,c3p0会自动的向连接池中存放连接
* setXXx()方法
* 3:从连接池中获取连接
* getConnection()
* 4:通过连接执行sql
*
*/
public class C3P0Utils {
//1:创建连接池对象
private static ComboPooledDataSource dataSource = new ComboPooledDataSource();
//2:需要给连接池指定四大信息,c3p0会自动的向连接池中存放连接
static{
try {
dataSource.setDriverClass("com.mysql.jdbc.Driver");
dataSource.setJdbcUrl("jdbc:mysql://localhost:3306/day05db");
dataSource.setUser("root");
dataSource.setPassword("1233"); // /root/lesson \root\lesson
} catch (Exception e) {
}
}
//3:从连接池中获取连接
public static Connection getConnection() throws SQLException{
return dataSource.getConnection();
}
//4:释放资源
public static void close(ResultSet rs, Statement stat, Connection conn) {
if (rs != null) {
try {
rs.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
if (stat != null) {
try {
stat.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
if (conn != null) {
try {
conn.close(); //这里的close不是把连接断开,而是把连接重新放回连接池
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
版本2
- 将四大信息配置到c3p0-config.xml
- 当然还要配置连接池的一些信息,如连接数量等
package pack04_c3p0;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import com.mchange.v2.c3p0.ComboPooledDataSource;
/*
* 1:创建连接池对象
* new ComboPooledDataSource();对象
* 2:需要给连接池指定四大信息,c3p0会自动的向连接池中存放连接
* setXXx()方法
* 3:从连接池中获取连接
* getConnection()
* 4:通过连接执行sql
*
*/
public class C3P0Utils {
//1:创建连接池对象
/*
* 只要你写了配置文件c3p0-config.xml,在创建ComboPooledDataSource的时候,系统会自动去
* 解析xml文件,然后创建连接池
*/
private static ComboPooledDataSource dataSource = new ComboPooledDataSource();
//2:需要给连接池指定四大信息,c3p0会自动的向连接池中存放连接
// static{
// try {
// dataSource.setDriverClass("com.mysql.jdbc.Driver");
// dataSource.setJdbcUrl("jdbc:mysql://localhost:3306/day05db");
// dataSource.setUser("root");
// dataSource.setPassword("1233"); // /root/lesson \root\lesson
// } catch (Exception e) {
// }
// }
//
//3:从连接池中获取连接
public static Connection getConnection() throws SQLException{
return dataSource.getConnection();
}
//4:释放资源
public static void close(ResultSet rs, Statement stat, Connection conn) {
if (rs != null) {
try {
rs.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
if (stat != null) {
try {
stat.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
if (conn != null) {
try {
conn.close(); //这里的close不是把连接断开,而是把连接重新放回连接池
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}