1 数据库连接池 C3p0 和 Druid 

         1.1 定义 : 

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

         1.2  如何用:

          1.2.1 标准接口 Datasource javax.sql包下          方法:getConnection();获得链接       Connection.close();归还           1.2.2 一般我们不实现这个接口 数据库厂商或者连接池厂商来实现这个接口           1.2.3 C3P0      步骤:

       1  导包 两个包 c3p0-0.9.5.2.jar mchange-commons-java-0.2.12         2  定义配置文件 名称 c3p0.properties c3p0-config.xml   路径:将文件放到src目录下         3  创建核心对象 数据库连接池对象ComboPoolDataSource          4   获取链接 getConnection

例1:


 package cn.Wuchuang.C3p0Druid;

 import com.mchange.v2.c3p0.ComboPooledDataSource;

 import javax.sql.DataSource;
import java.sql.Connection;
import java.sql.SQLException; public class Demo1C3P0 {
public static void main(String[] args) throws SQLException {
// 1 导包 两个包 c3p0-0.9.5.2.jar mchange-commons-java-0.2.12
// 2 定义配置文件 名称
// 路径:将文件放到src目录下
// 3 创建核心对象 数据库连接池对象ComboPoolDataSource
DataSource ds = new ComboPooledDataSource();
// 4 获取链接 getConnection
Connection conn = ds.getConnection();
System.out.println(conn+"哈哈");
}
}

例2:


 package cn.Wuchuang.C3p0Druid;

 import com.mchange.v2.c3p0.ComboPooledDataSource;

 import javax.sql.DataSource;
import java.sql.Connection; public class Demo2C3P0 {
public static void main(String[] args) throws Exception {
DataSource data = new ComboPooledDataSource(); for (int i =1;i<=11;i++){
Connection conn = data.getConnection();
System.out.println(i+" "+conn);
if (i==5){
//归还连接池。
conn.close();
}
}
}
}

例3:


 package cn.Wuchuang.C3p0Druid;

 import com.alibaba.druid.pool.DruidDataSourceFactory;

 import javax.sql.DataSource;
import java.io.IOException;
import java.io.InputStream;
import java.sql.Connection;
import java.util.Properties; public class Demo3Druid {
public static void main(String[] args) throws Exception {
//加载文件。
Properties pro = new Properties();
InputStream in = Demo3Druid.class.getClassLoader().getResourceAsStream("druid.properties");
pro.load(in);
//获得数据库连接池对象、
//通过DruidDataSourceFactory
DataSource dats = DruidDataSourceFactory.createDataSource(pro);
//获取链接。
Connection conn = dats.getConnection();
System.out.println(conn+"我被测试了");
}
}

例4:


 package cn.Wuchuang.C3p0Druid;

 import org.junit.Test;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.support.JdbcUtils; import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException; public class Demo4Druid {
@Test
public void Druids(){ Connection conn = null;
PreparedStatement ppst = null;
try {
//完成一个添加操作。
//获得链接。
conn = JDBCUtils.getConnection();
//定义SQL语句。
String sql =("insert into salarys values(7,?,?)");
//获得执行的语句。
ppst = conn.prepareStatement(sql);
//给?赋值。
ppst.setInt(1,610);
ppst.setInt(2,800);
//执行SQL语句。
int i = ppst.executeUpdate();
System.out.println(i);
} catch (Exception e) {
e.printStackTrace();
}finally {
JDBCUtils.close(conn,ppst);
}
}
}

JDBC工具类:


 package cn.Wuchuang.C3p0Druid;

 import javax.sql.DataSource;
import java.sql.*; public class JDBCUtils {
private static final String r = "root";
private static final String p = "root";
private static final String url = "jdbc:mysql:///semployee";
private static final String DRIVER = "com.mysql.jdbc.Driver";
//注册驱动。
static{
try {
Class.forName(DRIVER);
} catch (Exception e) {
e.printStackTrace();
}
}
//得到数据库链接。
public static Connection getConnection() throws Exception {
return DriverManager.getConnection(url,r,p);
} //关闭链接,执行打开的资源。
public static void close(Connection conn,Statement stmt){
if (stmt!=null){
try {
stmt.close();
} catch (Exception e) {
e.printStackTrace();
}
}
if (conn!=null){
try {
conn.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
//关闭所有打开的资源。
public static void close(Connection conn, Statement stmt, ResultSet rs){
if (stmt!=null){
try {
stmt.close();
} catch (Exception e) {
e.printStackTrace();
}
}if (conn!=null){
try {
conn.close();
} catch (Exception e) {
e.printStackTrace();
}
}
if (rs!=null){
try {
rs.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
}

C3p0连接池-Java(新手)的更多相关文章

  1. Java框架spring 学习笔记(十六):c3p0连接池的配置以及dao使用jdbcTemplate

    连接池可以大大提高数据库的性能和连接速度,将那些已连接的数据库连接存放在一个连接池里,以后别人要连接数据库的时候,将不会重新建立数据库连接,直接从连接池中取出可用的连接,用户使用完毕后,会释放连接重新 ...

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

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

  3. C3P0连接池配置(C3P0Utils.java)

    配置文件 c3p0-config.xml <?xml version="1.0" encoding="UTF-8"?> <c3p0-confi ...

  4. java学习笔记—c3p0连接池与元数据分析(42)

    第一步:导入c3p0包 第二步:在classpath目录下,创建一个c3p0-config.xml <?xml version="1.0" encoding="UT ...

  5. Java开发笔记(一百五十)C3P0连接池的用法

    JDBC既制定统一标准兼容了多种数据库,又利用预报告堵上了SQL注入漏洞,照理说已经很完善了,可是人算不如天算,它在性能方面不尽如人意.问题出在数据库连接的管理上,按照正常流程,每次操作完数据库,都要 ...

  6. Java测试开发--MySql之C3P0连接池(八)

    连接池C3P0! 连接池技术的目的:解决建立数据库连接耗费资源和时间很多的问题,提高性能 ! 下面以案例演示下C3P0的操作流程. 1.测试准备: ①MySql数据库一枚②database名为myte ...

  7. (30)java web的hibernate使用-c3p0连接池配置

    hibernate支持c3p0连接池 需要导入c3p0的jar包 <!-- 配置连接驱动管理类 --> <property name="hibernate.connecti ...

  8. c3p0连接池]

    <c3p0-config> <!-- 默认配置 --> <default-config> <property name="jdbcUrl" ...

  9. C3P0连接池在hibernate和spring中的配置

    首先为什么要使用连接池及为什么要选择C3P0连接池,这里就不多说了,目前C3P0连接池还是比较方便.比较稳定的连接池,能与spring.hibernate等开源框架进行整合. 一.hibernate中 ...

随机推荐

  1. DailyRollingFileAppender-设置文件大小和备份天数

    感谢:http://byx5185.iteye.com/blog/1616034 1.重写FileAppender : package com.bankht.cis.tps.apps.tps.util ...

  2. SpringMVC学习笔记三:Controller的返回值

    springMVC的返回值有ModelAndView,String,void,Object类型 项目目录树: 该项目是在前面项目的基础上修改的,这里的pom.xml文件需要加入使用到的包,应为@Res ...

  3. 吴裕雄--天生自然 人工智能机器学习实战代码:线性判断分析LINEARDISCRIMINANTANALYSIS

    import numpy as np import matplotlib.pyplot as plt from matplotlib import cm from mpl_toolkits.mplot ...

  4. [转载] 自定义标签,jsp调用java类

    自己懒得做笔记,借用一下. 之前例子已经写好了,由于时间关系一直没有发布,这次带来的是关于taglib中的<tag>的基本功能已经介绍完毕了,在taglib中我们发现有一个标签叫做< ...

  5. Android Studio那些错误的问题们

    本片博客会记录关于Android开发工具Android Studio出错的那些问题,包括导入项目编译失败.时间过长,莫名其妙的歇菜等等... 问题 3facets cannot be loaded.Y ...

  6. 如何卸载烦人的2007组件,windows提供的解决方案

    如何卸载烦人的2007组件:很恶心人各种软件已经手动删除卸载都无法用,不是cd/dvd找不到就是什么msi文件找不到:对于这种恶心的问题,windows提供了如下解决方案:我使用fixit轻松卸载,很 ...

  7. uploadifive如何动态传参

    直接上代码 关键:$('#file_upload').data('uploadifive').settings.formData = { 'ID': 'ceshi'}; //动态更改formData的 ...

  8. diary20180428

    17:05:59 今天早晨去了图书馆.学习了一把vscode.试图在河边看电脑,总有小虫不让我专心. 23:27:34 看纯黑直播打战神,有点感触. 动漫或游戏,角色觉醒,实力大增,小时候(甚至现在) ...

  9. [红日安全]Web安全Day3 - CSRF实战攻防

    本文由红日安全成员: Once 编写,如有不当,还望斧正. 大家好,我们是红日安全-Web安全攻防小组.此项目是关于Web安全的系列文章分享,还包含一个HTB靶场供大家练习,我们给这个项目起了一个名字 ...

  10. 选题在线提交系统(html+JS+php)

    前言:         作为学习委员还是有挺多的事情要忙的,比如经常统计同学们的课设题目选择结果.如果老师的要求少一点,我还可以轻松一点.但是当老师对选题有种种限制的时候,自己就估计不会那么好办了.这 ...