C3P0是一个开放源代码的JDBC连接池,它在lib目录中与Hibernate一起发布,包括了实现jdbc3和jdbc2扩展规范说明的Connection 和Statement 池的DataSources 对象。
C3P0配置:
首先肯定是要下载个包的
c3p0-0.9.1-pre11.bin.zip
解压后把bin下的c3p0-0.9.1-pre11.jar包拷贝到项目下的lib里
接下来新建个连接文件
package dbc; import java.beans.PropertyVetoException; import java.sql.Connection; import java.sql.SQLException; import com.mchange.v2.c3p0.ComboPooledDataSource; public class ConnectionFactory { private ConnectionFactory(){ } private static ComboPooledDataSource ds = null; static { try { // Logger log = Logger.getLogger("com.mchange"); // 日志 // log.setLevel(Level.WARNING); ds = new ComboPooledDataSource(); // 设置JDBC的Driver类 ds.setDriverClass("oracle.jdbc.driver.OracleDriver"); // 参数由 Config 类根据配置文件读取 // 设置JDBC的URL ds.setJdbcUrl("jdbc:oracle:thin:@192.168.1.134:1521:zhpt"); // 设置数据库的登录用户名 ds.setUser("scott"); // 设置数据库的登录用户密码 ds.setPassword("tiger"); // 设置连接池的最大连接数 ds.setMaxPoolSize(200); // 设置连接池的最小连接数 ds.setMinPoolSize(20); } catch (PropertyVetoException e) { e.printStackTrace(); } } public static synchronized Connection getConnection() { Connection con = null; try { con = ds.getConnection(); } catch (SQLException e1) { e1.printStackTrace(); } return con; } // C3P0 end }
再建个文件用来测试
package dbc; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; public class dbctest { public static void main(String[] args) { boolean flag = false; // 在此处成具体的数据库验证 // 声明一个数据库操作对象 PreparedStatement pstmt = null; // 声明一个结果集对象 ResultSet rs = null; // 声明一个SQL变量,用于保存SQL语句 String sql = null; // DataBaseConnection为具体的数据库连接及关闭操作类 Connection con = null; // 连接数据库 con = ConnectionFactory.getConnection(); // 编写SQL语句 sql = "SELECT u_name,u_password FROM nwvideo.n_user WHERE u_name=? and u_password=?"; try { // 实例化数据库操作对象 pstmt = con.prepareStatement(sql); System.out.println("操作对象已被实例化"); // 设置pstmt的内容,是按ID和密码验证 pstmt.setString(1, "limeng"); pstmt.setString(2, "limeng"); System.out.println("获得username,password"); // 查询记录 rs = pstmt.executeQuery(); System.out.println("执行查询完毕"); // 判断是否有记录 if (rs.next()) { // 如果有记录,则执行此段代码 // 用户是合法的,可以登陆 flag = true; System.out.println("用户合法"); } // 依次关闭 rs.close(); pstmt.close(); } catch (Exception e) { System.out.println(e); } finally { // 最后一定要保证数据库已被关闭 try { con.close(); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } }
这样就这个C3P0,开源java连接池就配置成功了
使用这个类需要注意下mysql 8小时的问题
使用代码里的主要代码就是这句
con = ConnectionFactory.getConnection();
用完记得关闭