首先在eclipse中创建一个新的java project,然后本次构建的项目的目录如下:
dao:对数据库的操作,同时也是接口的实现
interface:对接口的声明
main:主函数(测试类)
model:创建数据库对象的实体类
serverce:业务层,业务逻辑的实现
其中c3p0-0.9.5.2.jar是c3p0需要的依赖包这个没有问题,但是需要注意的是它还需要依赖另一个包mchange-commons-java-版本号.jar,其次是数据库连接的驱动需要的包mysql-connector-java-版本号.jar(在这里出现问题的话就看看c3p0出现的问题(一),c3p0出现的问题(二))
具体的事例代码:
interface_do.java:
package dao;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import Interface.interface_test;
import model.model_test;
public class interface_do implements interface_test{
@Override
public int insert(Connection con, model_test model_test) {
String sql = "insert into c3p0 values(?, ?)";
PreparedStatement pstmt;
try {
pstmt = con.prepareStatement(sql);
pstmt.setString(1, model_test.getUsername());
pstmt.setString(2, model_test.getPassword());
return pstmt.executeUpdate();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
return 0;
}
}
}
interface_test.java:
package Interface;
import java.sql.Connection;
import model.model_test;
public interface interface_test {
int insert (Connection con, model_test model_test);
}
Main.java:
package main;
import java.sql.Connection;
import java.sql.SQLException;
import com.mchange.v2.c3p0.ComboPooledDataSource;
import serverce.insert;
import model.model_test;
public class Main {
static insert serverce = new insert();
static model_test model_test = new model_test();
private static String username = "Hello";
private static String password = "World";
public static void main(String[] args) {
Connection con = null;
ComboPooledDataSource pool = new ComboPooledDataSource();
try {
con = pool.getConnection();
model_test.setUsername(username);
model_test.setPassword(password);
serverce.insert(con, model_test);
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally {
try {
con.close();
} catch (SQLException e2) {
// TODO: handle exception
e2.printStackTrace();
}
}
}
}
model_test.java:
package model;
public class model_test {
private String username;
private String password;
public model_test() {
super();
}
public model_test(String username, String password) {
super();
this.username = username;
this.password = password;
}
public void setUsername(String username) {
this.username = username;
}
public String getUsername() {
return username;
}
public void setPassword(String password) {
this.password = password;
}
public String getPassword() {
return password;
}
}
insert.java:
package serverce;
import java.sql.Connection;
import java.sql.SQLException;
import dao.interface_do;
import model.model_test;
public class insert {
interface_do insert_dao = new interface_do();
public void insert(Connection con, model_test model_test) throws SQLException {
int flag = insert_dao.insert(con, model_test);
if(flag == 0) {
System.out.println("You are wrong!!!");
}
else {
System.out.println("You are right!!!");
}
}
}
c3p0-config.xml:
<?xml version="1.0" encoding="UTF-8"?>
<c3p0-config>
<default-config>
<property name="driverClass">com.mysql.cj.jdbc.Driver</property>
<property name="jdbcUrl">jdbc:mysql://localhost:3306/c3p0_test?serverTimezone=GMT</property>
<property name="user">root</property>
<property name="password">zhang123456</property>
<!--当连接池中的连接耗尽的时候c3p0一次同时获取的连接数。Default:3 -->
<property name="acquireIncrement">5</property>
<!--初始化的连接数,取值应在minPoolSize与maxPoolSize之间。Default: 3-->
<property name="initialPoolSize">10</property>
<!--连接池中保留的最小连接数-->
<property name="minPoolSize">5</property>
<!--连接池中保留的最大连接数。Default:15 -->
<property name="maxPoolSize">20</property>
<!--定义在从数据库获取新连接失败后重复尝试的次数。Default: 30 -->
<property name="acquireRetryAttempts">30</property>
<!--两次连接中间隔时间,单位毫秒。Default: 1000 -->
<property name="acquireRetryDelay">1000</property>
<!--连接关闭时默认将所有未提交的操作回滚。Default: false -->
<property name="autoCommitOnClose">false</property>
</default-config>
</c3p0-config>