1.新建项目后,导入jar包,c3p0,mysql,pool,等包。
如图
2.配置文件, 分为手动配置,自动配置文件
a)手动配置文件
//
public static void demo1(){
// 连接对象
Connection coon = null;
// sql 编译对象
PreparedStatement pstm = null;
// sql 执行对象
ResultSet rs = null;
// c3p0 数据库连接池对象
ComboPooledDataSource dataSource = new ComboPooledDataSource();
try {
// 获得驱动
dataSource.setDriverClass("com.mysql.jdbc.Driver");
dataSource.setJdbcUrl("jdbc:mysql://localhost:3306/db");
dataSource.setUser("root");
dataSource.setPassword("root");
// 获得 数据连接对象
coon = dataSource.getConnection();
String sql ="select*from exam";
// 编译执行 sql
pstm =coon.prepareStatement(sql);
rs = pstm.executeQuery();
while(rs.next()){
System.out.println(rs.getInt("id")+" "+
rs.getString("ename"));
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
// 关闭资源
}finally{
JDBCUtils.release(coon, rs, pstm);
}
}
b> 自动配置文件
public static void demo2(){
Connection coon = null;
PreparedStatement pstm = null;
ResultSet rs = null;
ComboPooledDataSource dataSource = new ComboPooledDataSource();
try {
coon = dataSource.getConnection();
String sql ="select * from exam";
pstm = coon.prepareStatement(sql);
rs = pstm.executeQuery();
while(rs.next()){
System.out.println(rs.getInt("id")+" "+rs.getString("ename"));
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
JDBCUtils.release(coon, rs, pstm);
}
}
// 创建ComboPooledDataSource 对象 即可获得配置文件,
// 手动,还是自动, 都可获得配置文件
ComboPooledDataSource dataSource = new ComboPooledDataSource();
配置文件:
<?xml version="1.0" encoding="UTF-8"?>
<c3p0-config>
<default-config>
<property name="driverClass">com.mysql.jdbc.Driver</property>
<property name="jdbcUrl">jdbc:mysql:///db</property>
<property name="user">root</property>
<property name="password">root</property>
<property name="initialPoolSize">5</property>
<property name="maxPoolSize">20</property>
</default-config>
</c3p0-config>
mysql 数据库,库名db,表名,exam
提高代码的复用性,可将部分代码封装到一个工具类。
工具类代码(JDBCUtils2.java):
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import javax.sql.DataSource;
import com.mchange.v2.c3p0.ComboPooledDataSource;
public class JDBCUtils2 {
private static final ComboPooledDataSource DATA_SOURCE = new ComboPooledDataSource();
public static Connection getConnection(){
Connection coon = null;
try {
coon = DATA_SOURCE.getConnection();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return coon;
}
public static DataSource getDataSource(){
return DATA_SOURCE;
}
public static void release(ResultSet rs,Statement stmt,Connection conn){
if (rs != null) {
try {
rs.close();
} catch (SQLException e) {
e.printStackTrace();
}
// 垃圾回收尽快回收对象.
rs = null;
}
if (stmt != null) {
try {
stmt.close();
} catch (SQLException e) {
e.printStackTrace();
}
// 垃圾回收尽快回收对象.
stmt = null;
}
if (conn != null) {
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
// 垃圾回收尽快回收对象.
conn = null;
}
}
}
实现类(JDBCDemo3):
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import com.mycode.jdbc.JDBCUtils2;
public class JDBCDemo3 {
public static void main(String[] args){
demo1();
}
public static void demo1(){
Connection coon = null;
PreparedStatement pstm = null;
ResultSet rs = null;
coon = JDBCUtils2.getConnection();
String sql = "select*from exam";
try {
pstm = coon.prepareStatement(sql);
rs = pstm.executeQuery();
while(rs.next()){
System.out.println(rs.getInt("id")+" "+
rs.getString("ename"));
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
JDBCUtils2.release(rs, pstm, coon);
}
}
}