学了一些东西来总结一下吧!
C3P0是一个开源的JDBC连接池,它实现了数据源和JNDI绑定,支持JDBC3规范和JDBC2的标准扩展。目前使用它的开源项目有Hibernate,Spring等。 --来自百度
怎么做呢?
新建java项目,添加c3p0-config.xml。xml内容是
<?xml version="1.0" encoding="UTF-8"?>
<c3p0-config>
<default-config>
<property name="driverClass">com.mysql.jdbc.Driver</property>
<property name="jdbcUrl">jdbc:mysql:///web08</property>
<property name="user">root</property>
<property name="password">JB595132</property>
<property name="initialPoolSize">5</property>
<property name="maxPoolSize">20</property>
</default-config>
<named-config name="itheima">
<property name="driverClass">com.mysql.jdbc.Driver</property>
<property name="jdbcUrl">jdbc:mysql:///web08</property>
<property name="user">root</property>
<property name="password">JB595132</property>
</named-config>
</c3p0-config>
这个xml代表的是连接数据库的配置信息驱动,数据库地址,登陆名称和密码。
构造连接源
public class C3P0Utils {
public static ComboPooledDataSource dataSource=new ComboPooledDataSource("itheima");
public static DataSource getDataSource(){
return dataSource;
}
public static Connection getConnection(){
try {
return dataSource.getConnection();
} catch (SQLException e) {
throw new RuntimeException(e);
}
}
ComboPooledDataSource是固定的方法自动找xml文件(c3p0-config.xml这个文件的名字不能改变!)其中的参数“itheima”是参数,是xml属性的一个,xml有两个配置信息。
下面是执行sql,插入到数据库中。
public class TestC3p0 {
@Test
public void testAddUser2(){
Connection conn=null;
PreparedStatement pstmt=null;
// MyDataSource datasource=new MyDataSource();
// ComboPooledDataSource datasource=new ComboPooledDataSource();
try{
conn=C3P0Utils.getConnection();
String sql="insert into user values(null,?,?,null)";
pstmt=conn.prepareStatement(sql);
pstmt.setString(1, "吕布bu122"); //参数化
pstmt.setString(2, "diaocan2");
int rows=pstmt.executeUpdate();//执行操作
if(rows>0){
System.out.println("成功了");
}
else{
System.out.println("添加失败了");
}
}catch(Exception e){
throw new RuntimeException(e);
}finally{
//datasource.backConnection(conn);
JDBCUtils_V3.release(conn, pstmt, null);//关闭连接
}
}
}
public static void release(Connection conn, java.sql.PreparedStatement pstmt, ResultSet rs) {
if (conn != null) {
try {
conn.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
if (pstmt != null) {
try {
pstmt.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
if (rs != null) {
try {
rs.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}