一、直接使用代码链接(一般企业开发不会用到。大多数用方法二)

1.导入jar

2.新建JDBCUtil

  1. import java.io.FileInputStream;
  2. import java.io.InputStream;
  3. import java.sql.Connection;
  4. import java.sql.DriverManager;
  5. import java.sql.ResultSet;
  6. import java.sql.SQLException;
  7. import java.sql.Statement;
  8. import java.util.Properties;
  9. public class JDBCUtil {
  10. static String driverClass = null;
  11. static String url = null;
  12. static String name = null;
  13. static String password= null;
  14. static{
  15. try {
  16. //1. 创建一个属性配置对象
  17. Properties properties = new Properties();
  18. InputStream is = new FileInputStream("jdbc.properties");
  19. //导入输入流。
  20. properties.load(is);
  21. //读取属性
  22. driverClass = properties.getProperty("driverClass");
  23. url = properties.getProperty("url");
  24. name = properties.getProperty("name");
  25. password = properties.getProperty("password");
  26. } catch (Exception e) {
  27. e.printStackTrace();
  28. }
  29. }
  30. /**
  31. * 获取连接对象
  32. * @return
  33. */
  34. public static Connection getConn(){
  35. Connection conn = null;
  36. try {
  37. Class.forName(driverClass);
  38. //2. 建立连接 参数一: 协议 + 访问的数据库 , 参数二: 用户名 , 参数三: 密码。
  39. conn = DriverManager.getConnection(url, name, password);
  40. } catch (Exception e) {
  41. e.printStackTrace();
  42. }
  43. return conn;
  44. }
  45. /**
  46. * 释放资源
  47. * @param conn
  48. * @param st
  49. * @param rs
  50. */
  51. public static void release(Connection conn , Statement st , ResultSet rs){
  52. closeRs(rs);
  53. closeSt(st);
  54. closeConn(conn);
  55. }
  56. public static void release(Connection conn , Statement st){
  57. closeSt(st);
  58. closeConn(conn);
  59. }
  60. private static void closeRs(ResultSet rs){
  61. try {
  62. if(rs != null){
  63. rs.close();
  64. }
  65. } catch (SQLException e) {
  66. e.printStackTrace();
  67. }finally{
  68. rs = null;
  69. }
  70. }
  71. private static void closeSt(Statement st){
  72. try {
  73. if(st != null){
  74. st.close();
  75. }
  76. } catch (SQLException e) {
  77. e.printStackTrace();
  78. }finally{
  79. st = null;
  80. }
  81. }
  82. private static void closeConn(Connection conn){
  83. try {
  84. if(conn != null){
  85. conn.close();
  86. }
  87. } catch (SQLException e) {
  88. e.printStackTrace();
  89. }finally{
  90. conn = null;
  91. }
  92. }
  93. }

3.新建C3P0Demo

  1. import java.sql.Connection;
  2. import java.sql.PreparedStatement;
  3. import org.junit.Test;
  4. import com.hbxy.rick.util.JDBCUtil;
  5. import com.mchange.v2.c3p0.ComboPooledDataSource;
  6. public class C3P0Demo {
  7. @Test
  8. public void testC3P0() {
  9. Connection conn = null;
  10. PreparedStatement ps = null;
  11. try {
  12. //1. 创建datasource
  13. ComboPooledDataSource dataSource = new ComboPooledDataSource();
  14. //2. 设置连接数据的信息
  15. dataSource.setDriverClass("com.mysql.jdbc.Driver");
  16. dataSource.setJdbcUrl("jdbc:mysql://localhost/eclipsetest");
  17. dataSource.setUser("root");
  18. dataSource.setPassword("xxxxxx");
  19. //2. 得到连接对象
  20. conn = dataSource.getConnection();
  21. String sql = "insert into stus values( ? , ?)";
  22. ps = conn.prepareStatement(sql);
  23. ps.setString(1, "admi234n");
  24. ps.setInt(2, 103200);
  25. ps.executeUpdate();
  26. } catch (Exception e) {
  27. e.printStackTrace();
  28. }finally {
  29. JDBCUtil.release(conn, ps);
  30. }
  31. }
  32. }

二、用配置文件链接(重点)

1.导入jar

2.新建JDBCUtil

3.新建c3p0-config.xml配置文件(放在src目录下)

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <c3p0-config>
  3. <!-- default-config 默认的配置, -->
  4. <default-config>
  5. <property name="driverClass">com.mysql.jdbc.Driver</property>
  6. <property name="jdbcUrl">jdbc:mysql://localhost/mydb</property>
  7. <property name="user">root</property>
  8. <property name="password">xxxxxx</property>
  9. <property name="initialPoolSize">10</property>
  10. <property name="maxIdleTime">30</property>
  11. <property name="maxPoolSize">100</property>
  12. <property name="minPoolSize">10</property>
  13. <property name="maxStatements">200</property>
  14. </default-config>
  15. <!-- This app is massive! -->
  16. <named-config name="oracle">
  17. <property name="acquireIncrement">50</property>
  18. <property name="initialPoolSize">100</property>
  19. <property name="minPoolSize">50</property>
  20. <property name="maxPoolSize">1000</property>
  21. <!-- intergalactoApp adopts a different approach to configuring statement caching -->
  22. <property name="maxStatements">0</property>
  23. <property name="maxStatementsPerConnection">5</property>
  24. <!-- he's important, but there's only one of him -->
  25. <user-overrides user="master-of-the-universe">
  26. <property name="acquireIncrement">1</property>
  27. <property name="initialPoolSize">1</property>
  28. <property name="minPoolSize">1</property>
  29. <property name="maxPoolSize">5</property>
  30. <property name="maxStatementsPerConnection">50</property>
  31. </user-overrides>
  32. </named-config>
  33. </c3p0-config>

4.新建C3P0Demo02

  1. package com.hbxy.rick.c3p0;
  2. import java.sql.Connection;
  3. import java.sql.PreparedStatement;
  4. import org.junit.Test;
  5. import com.hbxy.rick.util.JDBCUtil;
  6. import com.mchange.v2.c3p0.ComboPooledDataSource;
  7. public class C3P0Demo02 {
  8. @Test
  9. public void testC3P0() {
  10. Connection conn = null;
  11. PreparedStatement ps = null;
  12. try {
  13. //1. 创建datasource
  14. ComboPooledDataSource dataSource = new ComboPooledDataSource();
  15. //2. 得到连接对象
  16. conn = dataSource.getConnection();
  17. String sql = "insert into stus values( ? , ?)";
  18. ps = conn.prepareStatement(sql);
  19. ps.setString(1, "zhnsdgndngandgna ");
  20. ps.setInt(2, 3200);
  21. ps.executeUpdate();
  22. } catch (Exception e) {
  23. e.printStackTrace();
  24. }finally {
  25. JDBCUtil.release(conn, ps);
  26. }
  27. }
  28. }

数据库连接池C3P0的使用的更多相关文章

  1. 数据库连接JDBC和数据库连接池C3P0自定义的java封装类

    数据库连接JDBC和数据库连接池C3P0自定义的java封装类 使用以下的包装类都需要自己有JDBC的驱动jar包: 如 mysql-connector-java-5.1.26-bin.jar(5.1 ...

  2. 数据库连接池 c3p0 druid

    druid 数据库连接池 c3p0 使用C3P0数据源时需要依赖 mchange-commons-java-0.2.3.4.jar包.缺少该jar包则会报错!

  3. 数据库连接池——C3P0&Druid(快速入门)

    数据库连接池--C3P0&Druid (一) 数据库连接池 每一个事物都有其存在的意义,在初学jdbc的时候,我们建立数据库连接对象后,会对其进行释放,但是数据库连接的建立和关闭是非常消耗资源 ...

  4. 数据库连接池c3p0学习

    这里只记录c3p0的数据源,不会涉及到其它方面和别的数据库连接池的对比 配置文件主要的实现方式有三种: 1.手写代码去加载一个配置文件 创建一个config.properties文件如下: drive ...

  5. [数据库连接池二]Java数据库连接池--C3P0和JDNI.

    前言:上一篇文章中讲了DBCP的用法以及实现原理, 这一篇再来说下C3P0和JDNI的用法. 1.1.C3P0数据源 C3P0是一个开源的JDBC连接池,它实现了数据源和JNDI绑定,支持JDBC3规 ...

  6. 数据库连接池 c3p0 demo 代码和分析

    import java.sql.Connection; import java.sql.SQLException; import java.beans.PropertyVetoException; i ...

  7. 数据库连接池c3p0和dbcp

    现在常用的开源数据连接池主要有c3p0.dbcp和proxool三种,其中: hibernate开发组推荐使用c3p0; spring开发组推荐使用dbcp(dbcp连接池有weblogic连接池同样 ...

  8. 数据库连接池 C3p0

    数据库连接池 C3po 1 定义 本质上是个容器(集合) 存放数据库的连接容器(connection 对象) ,当系统初始化以后 容器就会创建 容器中就会申请一些连接对象 ,当用户来访问数据库的时候 ...

  9. java学习笔记41(数据库连接池 C3p0连接池)

    在之前的学习中,我们发现,我们需要频繁的创建连接对象,用完之后还需要在关闭资源,因为这些连接对象都是占资源的,但是又不得不创建,比较繁琐,为了解决这种情况,Java出现了数据库连接池: 数据库连接池的 ...

  10. JAVA数据库连接池C3p0 以及阿里Druid提供的连接池

    一:连接池的定义 本质上就是个容器(集合) 存放数据库连接的容器,当系统初始化后,容器被创建,容器中就会申请一些连接对象,当用户来访问数据库的时候,从容器中取连接对象,用户用完之后,归还. 二:常用的 ...

随机推荐

  1. R 误差自相关与DW检验

    R语言进行DW检验: library(lmtest) dw = dwtest(fm1) > dw Durbin-Watson test data: fm1 DW = 2.4994, p-valu ...

  2. 挖矿程序minerd入侵分析和解决办法

    现在比特币的价格涨得很高,所以现在有黑客专门制造挖矿木马来诱导网友,从而达到控制电脑上的显卡来挖掘比特币.为什么木马要控制电脑中的显卡呢?因为显卡挖掘虚拟货币比特币的效率远比 CPU 要高.如果你是一 ...

  3. UCENTER同步登录工作原理和配置要点

    ucenter的同步登录原理: 1)Ucenter是和uc_client同步的.每个PHP应用,加入了UCENTER后,都会在主目录下有个UC_CLIENT目录.这个目录里,都有一个client.PH ...

  4. SpringMVC之ModelAndView的用法

    https://blog.csdn.net/qq30211478/article/details/78016155

  5. flower——知识总结

    创建主外键关联的话,外键表的外键字段一定要与主键表的主键字段相一致,包括字段类型,字段长度,字段符号等等 inverse="true" 将控制权交给对方,在一对多的关系中,一端控制 ...

  6. spring boot 接口service有多个实现类

    接口.java public interface DeService { } 接口实现类1.java @Service("ud")public class DeServiceImp ...

  7. POJO,JavaBean,entity的理解

    POJO本质是就是JavaBean JavaBean JavaBean实际上是指一种特殊的Java类,它通常用来实现一些比较常用的简单功能,并可以很容易的被重用或者是插入其他应用程序中去.所有遵循“一 ...

  8. symbol数据类型

    symbol声明的类型独一无二 概念:表示独一无二的值,永远不相等 s1 = Symbol() s2 = Symbol() s1 !== s2 基本使用: 通过Symbol函数生成,得到一个symbo ...

  9. 对状态字的理解 尤其是 首次检测位“/FC”的想法

    状态字 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0               BR CC1 CC0 OV OS OR STA RLO /FC 问题1 关于首次检测位& ...

  10. 51nod 1439:互质对 容斥原理

    1439 互质对 题目来源: CodeForces 基准时间限制:2 秒 空间限制:131072 KB 分值: 160 难度:6级算法题  收藏  取消关注 有n个数字,a[1],a[2],-,a[n ...