C3p0连接池-Java(新手)
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(新手)的更多相关文章
- Java框架spring 学习笔记(十六):c3p0连接池的配置以及dao使用jdbcTemplate
连接池可以大大提高数据库的性能和连接速度,将那些已连接的数据库连接存放在一个连接池里,以后别人要连接数据库的时候,将不会重新建立数据库连接,直接从连接池中取出可用的连接,用户使用完毕后,会释放连接重新 ...
- java学习笔记41(数据库连接池 C3p0连接池)
在之前的学习中,我们发现,我们需要频繁的创建连接对象,用完之后还需要在关闭资源,因为这些连接对象都是占资源的,但是又不得不创建,比较繁琐,为了解决这种情况,Java出现了数据库连接池: 数据库连接池的 ...
- C3P0连接池配置(C3P0Utils.java)
配置文件 c3p0-config.xml <?xml version="1.0" encoding="UTF-8"?> <c3p0-confi ...
- java学习笔记—c3p0连接池与元数据分析(42)
第一步:导入c3p0包 第二步:在classpath目录下,创建一个c3p0-config.xml <?xml version="1.0" encoding="UT ...
- Java开发笔记(一百五十)C3P0连接池的用法
JDBC既制定统一标准兼容了多种数据库,又利用预报告堵上了SQL注入漏洞,照理说已经很完善了,可是人算不如天算,它在性能方面不尽如人意.问题出在数据库连接的管理上,按照正常流程,每次操作完数据库,都要 ...
- Java测试开发--MySql之C3P0连接池(八)
连接池C3P0! 连接池技术的目的:解决建立数据库连接耗费资源和时间很多的问题,提高性能 ! 下面以案例演示下C3P0的操作流程. 1.测试准备: ①MySql数据库一枚②database名为myte ...
- (30)java web的hibernate使用-c3p0连接池配置
hibernate支持c3p0连接池 需要导入c3p0的jar包 <!-- 配置连接驱动管理类 --> <property name="hibernate.connecti ...
- c3p0连接池]
<c3p0-config> <!-- 默认配置 --> <default-config> <property name="jdbcUrl" ...
- C3P0连接池在hibernate和spring中的配置
首先为什么要使用连接池及为什么要选择C3P0连接池,这里就不多说了,目前C3P0连接池还是比较方便.比较稳定的连接池,能与spring.hibernate等开源框架进行整合. 一.hibernate中 ...
随机推荐
- Java IO: ByteArray和Filter
作者: Jakob Jenkov 译者: 李璟(jlee381344197@gmail.com) 本小节会简要概括Java IO中字节数组与过滤器的输入输出流,主要涉及以下4个类型的流:ByteArr ...
- selenium ide几个版本和对应的firefox版本
最近安装selenium ide折腾了好久,可能是目前还不太熟悉自动化脚本录制的一些知识. 通过最新版firefox59安装的selenium ide 3.0.2录制的脚本不能导出.于是下载了低版本的 ...
- OpenResty+缓存穿透基本介绍
OpenResty 1.lua表达式 2.Nginx的安装 3.OpenResty ...
- Sublime Text 2+Zen Coding
自己长期使用editplus做代码编辑,使用过DW,还是习惯前者的使用环境.好友推荐,试试新的编码工具——Sublime Text 2.在代码制作过程中,最主要的是1)快速复制的模式化工作 2)零碎 ...
- Java的同步和异步
同步:发送一个请求,等待返回,然后再发送下一个请求 异步:发送一个请求,不等待返回,随时可以再发送下一个请求 同步可以避免出现死锁,读脏数据的发生,一般共享某一资源的时候用,如果每个人都有修改权限,同 ...
- dTree动态生成树(后台处理,简化前台操作)
dTree是个很方便在页面生成树的 js 控件,如果你下载了,我猜里在几分钟之内便能在页面上显示出一颗树来. 它本身给的例子是通过一些静态数据构造树,下面我说一种通过查询的数据动态构造树的方法. 例子 ...
- MySQL rand(随机数)、floor(保留整数)、char(ASCII 转字符)、concat(字符串连接)
一.MySQL的rand()函数 select rand(); rand()函数,随机0-1之间的数. 二.获得0-10之间的整数(包含0,不包含10) ; 其中floor()去掉小数. 三.获得指定 ...
- GNS3(1)——OSPF多区域配置
GNS3(1)——OSPF多区域配置 RIP适用于中小网络,比较简单.没有系统内外.系统分区,边界等概念,用到不是分类的路由. OSPF适用于较大规模网络.它把自治系统分成若干个区域,通过系列内外路由 ...
- 深入理解JavaScript的函数作用域
什么是作用域 ? 作用域:一个变量可以生效的范围. 变量不是在所有地方都可以使用的,而这个变量的使用范围就是我们要说的作用域. 注意:在JavaScript中,划分作用域也是用大括号划分的, 但是在 ...
- C++扬帆远航——5(换分币)
/* * Copyright (c) 2016,烟台大学计算机与控制工程学院 * All rights reserved. * 文件名:huanfenbi.cpp * 作者:常轩 * 完成日期:201 ...