配置资源文件
<?xml version="1.0" encoding="UTF-8"?>
<c3p0-config>
<!--
c3p0的缺省(默认)配置
如果在代码中ComboPooledDataSource ds=new ComboPooledDataSource();这样写就表示使用的是c3p0的缺省(默认)-->
<default-config>
<property name="driverClass">com.mysql.jdbc.Driver</property>
<property name="jdbcUrl">jdbc:mysql://localhost:3306/jdbcstudy?useUnicode=true&characterEncoding=utf8&uesSSL=true&serverTimezone=UTC</property>
<property name="user">root</property>
<property name="password">198337</property>
<property name="acquireIncrement">5</property>
<property name="initialPoolSize">10</property>
<property name="minPoolSize">5</property>
<property name="maxPoolSize">20</property>
</default-config>
</c3p0-config>
创建工具类,读取配置文件
import com.mchange.v2.c3p0.ComboPooledDataSource;
import com.mysql.jdbc.Connection;
import javax.sql.DataSource;
import java.io.InputStream;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Properties;
public class JdbcUtils_C3p0 {
private static DataSource dataSource = null;
static {
try {
dataSource = new ComboPooledDataSource(); //使用默认数据源,读取配置文件c3p0-xml
}catch (Exception e) {
e.printStackTrace();
}
}
//获取连接
public static java.sql.Connection getConnection() throws SQLException {
return dataSource.getConnection();
}
//释放连接
public static void release(Connection conn, Statement st, ResultSet rs) throws SQLException {
if (rs!=null){
rs.close();
}
if (st!=null){
st.close();
}
if (conn!=null){
conn.close();
}
}
}
执行数据库插入操作
import com.pan.lesson03.JdbcUtils_C3p0;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Date;
public class TestC3p011 {
public static void main(String[] args) {
Connection conn = null;
PreparedStatement pstm = null;
ResultSet rs = null;
try {
conn = JdbcUtils_C3p0.getConnection();
String sql = "INSERT INTO users(`id`,`NAME`,`PASSWORD`,`email`,`birthday`)" +
"VALUES(?,?,?,?,?)"; //使用问号占位符,代替参数
pstm = conn.prepareStatement(sql); //预编译sql,先写sql不执行
pstm.setInt(1,6);
pstm.setString(2,"李洋渣");
pstm.setString(3,"544463666");
pstm.setString(4,"1458384732@qq.com");
//注意点:sql.Date util.Date 类型包不一样 最后要把时间戳转换为java.sql.Date类型
pstm.setDate(5,new java.sql.Date(new Date().getTime()));
//执行sql
int i = pstm.executeUpdate();
if (i>0){
System.out.println("插入成功");
}
} catch (SQLException throwables) {
throwables.printStackTrace();
}
}
}