iis服务器助手广告广告
返回顶部
首页 > 资讯 > 数据库 >c3po简单了解
  • 708
分享到

c3po简单了解

2024-04-02 19:04:59 708人浏览 独家记忆
摘要

package com.hanchao.test; import java.lang.reflect.Field; import java.sql.Connection; i

package com.hanchao.test;

import java.lang.reflect.Field;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Scanner;

import javax.sql.DataSource;

import com.mchange.v2.c3p0.DataSources;



public class TestPool {
	
	public static void main(String[] args) {
		

		
		final String DRIVER = "com.Mysql.jdbc.Driver";
		//final String URL = "jdbc:mysql://127.0.0.1:3306/mydb";
		//final String URL = "jdbc:mysql://localhost:3306/mydb";
		final String URL = "jdbc:mysql:///mydb";
		final String NAME = "root";
		final String PASSWord = "root";
		
		Connection conn = null;
		Statement stat = null;
		ResultSet rs = null;
		
		try {
			//1.加载数据库驱动
			Class.forName(DRIVER);
			//连接mysql数据库
			DataSource unpooled = DataSources.unpooledDataSource(URL,NAME,PASSWORD);
			//构建一个连接池
			DataSource pooled = DataSources.pooledDataSource(unpooled);

			//2.获取数据库连接(first Time)
		    conn = pooled.getConnection();
			System.out.println("1 con Class Type is :" + conn.getClass().getName());
			//取得内部的实际数据库连接
			Object o1 = getInner(conn);
			System.out.println("1 Inner con Class Type is :" + o1.getClass().getName());
			
			//3.获取Statement对象
			stat = conn.createStatement();
			//4.执行SQL
			rs = stat.executeQuery(" select * from t_user where id = 13");
		    while (rs.next()) {
				System.out.println(" username:" + rs.getString("username"));
			}
		    
		    //5.关闭连接
		    rs.close();
		    stat.close();
		    conn.close();
		    
		    //6.等待连接返回池中
		    try {
				Thread.sleep(1000);
			} catch (InterruptedException e) {
				e.printStackTrace();
			}
		    
		    //第二次获取数据库连接
		    conn = pooled.getConnection();
			System.out.println("2 con Class Type is :" + conn.getClass().getName());
			Object o2 = getInner(conn);
			System.out.println("2 Inner con Class Type is :" + o2.getClass().getName());
			
			//获取Statement对象
			stat = conn.createStatement();
			
			//3.获取Statement对象
			stat = conn.createStatement();
			//4.执行SQL
			rs = stat.executeQuery(" select * from t_user where id = 13");
		    while (rs.next()) {
				System.out.println(" username:" + rs.getString("username"));
			}
	
		} catch (ClassNotFoundException e) {
			e.printStackTrace();
		} catch (SQLException e) {
			e.printStackTrace();
		} finally {
			try {
				if (stat != null) {
					stat.close();
				}
			} catch (SQLException e) {
				e.printStackTrace();
			} finally {
				try {
					if (conn != null) {
						conn.close();
					}
				} catch (SQLException e) {
					e.printStackTrace();
				}
			}
		}
	}

	private static Object getInner(Object conn) {
		Object object = null;
		Field f ;
		
		try {
			f = conn.getClass().getDeclaredField("inner");
			f.setAccessible(true);
			object = f.get(conn);
			f.setAccessible(false);
		} catch (Exception e) {
			e.printStackTrace();
		} 
		return object;
	}

}

结果:

c3po简单了解

c3po简单了解

首先,从数据库连接池获得一个连接。发现连接类型并不是mysql的数据库连接,而是,com.mchange.v2.c3p0.impl.NewProxyConnection。通过类名,可以推测,从数据库连接池中获取的只是一个代理。

当我们关闭.NewProxyConnection连接时,并没有真正关闭连接,而只是将数据库连接放入连接池保存,使得数据库连接在连接池中得到复用。而从连接池返回的NewProxyConnection对象,只是对真实数据库连接的包装。

您可能感兴趣的文档:

--结束END--

本文标题: c3po简单了解

本文链接: https://www.lsjlt.com/news/41079.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 数据库的简单了解
    数据库一、什么是数据库   存储数据的仓库将数据有组织,按照特定的格式存储在介质上叫做数据库二、比较多个数据库系统a) Oracle   最好的数...
    99+
    2024-04-02
  • 简单了解JavaScript中的new Function
    目录前言1、语法01).无效的 JSON 对象字符串合法化02).模板字符串作为模板前言 JavaScript技术一直处于不断发展壮大中,如果你是前端开发人员或者JavaScript...
    99+
    2024-04-02
  • 如何简单了解pythonp-入门
    这篇文章给大家介绍如何简单了解pythonp-入门,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。简单了解pythonPython语言特色 Python是一门解释性语言解释性语言:在系统中运行时需要使用解释器(如:php...
    99+
    2023-06-02
  • 简单了解Spring Framework5.0新特性
    SpringFramework5.0是自2013年12月版本4发布之后SpringFramework的第一个主发行版。SpringFramework项目的领导人JuergenHoeller于2016年7月28日宣布了第一个SpringFra...
    99+
    2023-05-30
    spring5.0 新特性 fram
  • 简单了解 MySQL 中相关的锁
    本文主要是带大家快速了解 InnoDB 中锁相关的知识 基础概念解析和RocketMQ详细的源码解析 http://xiazai.jb51.net/202105/yuanma/Roc...
    99+
    2024-04-02
  • 一文简单了解C# 中的DataSet类
    目录前言DataSet属性和方法界面设计效果展示代码逻辑前言 今天我们一起学习一下DataSet类,DataSet类官方的表示是这样的:"表示数据的内存中缓存",...
    99+
    2024-04-02
  • 一文简单了解MySQL前缀索引
    当要索引的列字符很多时 索引则会很大且变慢 ( 可以只索引列开始的部分字符串 节约索引空间 从而提高索引效率 ) 原则: 降低重复的索引值 例如现在有一个地区表 areagdpcod...
    99+
    2024-04-02
  • 简单了解JavaBean作用及常用操作
    JavaBean是一种特殊的Java类,它具有以下特点:1. 封装性:JavaBean通过将属性设置为私有的,然后提供公共的gett...
    99+
    2023-08-15
    Java
  • 简单了解Java垃圾回收器的种类
    在这篇教程中我们将学习几种现有的垃圾回收器。在Java中,垃圾回收是一个自动的进程可以替代程序员进行内存的分配与回收这些复杂的工作。这篇是垃圾回 收教程系列的第三篇,在前面的第2部分我们看到了在Java中垃圾回收是如何工作的,那是篇有意思的...
    99+
    2023-05-30
    java 垃圾回收器 ava
  • 深入了解python的tkinter实现简单登录
    目录通过python的tkinter实现简单的注册登录代码截图登录页面注册页面个人主页修改个人信息失败修改个人信息成功重新登录twb总结通过python的tkinter实现简单的注册...
    99+
    2024-04-02
  • 对路由器和交换机的简单了解
          没有接触过网络产品,但是现在工作上用到了。出现过几次网络故障,自己一个人处理了下,感觉非常棘手,遂决定开始学习网络方面的知识,发现无论在生活中还是工作上都使用的非常广泛。好吧,开...
    99+
    2023-06-03
  • MySQL简单了解“order by”是怎么工作的
    针对排序来说,order by 是我们使用非常频繁的关键字。结合之前我们对索引的了解再来看这篇文章会让我们深刻理解在排序的时候,是如何利用索引来达到少扫描表或者使用外部排序的。 先定义一个表辅助我们后面理解...
    99+
    2024-04-02
  • mysqldump简单解析
       MySQL中的mysqldump,真是一个经典而有效的工具,经常用,但是不知道后台运行的过程中到底在干些什么,其实如果想得到这些基本的信息不一定要去看代码,我们通过日志的方式就...
    99+
    2024-04-02
  • GNS3简单图解
    题目: 实验要求:1.交换机下面有四个vlan:vlan10、20通过SW-3L三层交换机出,vlan30、40通过R3出2.图中有链路捆绑3.所有PC机器全网互通4.通过R2远程登陆SW1 SW-3L设置SW-3L#conf tSW-3...
    99+
    2023-01-31
    简单
  • 一文带你简单了解c++正则表达式
    目录1.正则表达式的需求1.1普通字符1.2特殊字符1.3限定字符2 std::regex极其相关2.1regex_match2.2regex_replace and regex_s...
    99+
    2023-05-15
    c++正则表达式 正则表达式的基本用法 c++ 正则表达式语法
  • 简单了解添加mysql索引的3条原则
    一,索引的重要性 索引用于快速找出在某个列中有一特定值的行。不使用索引,MySQL必须从第1条记录开始然后读完整个表直到找出相关的行。表越大,花费的时间越多。如果表中查询的列有一个索引,MySQL能快速到达...
    99+
    2024-04-02
  • 简单了解标准SQL的update语句三种用法
    一、环境: MySQL-5.0.41-win32 Windows XP professional 二、建立测试环境: DROP TABLE IF EXISTS t_test; CREATE T...
    99+
    2024-04-02
  • 简单了解Java方法的定义和使用实现
    目录什么是方法?方法的定义2021.6.2 方法的重载(重要笔试可能遇到)命令行传参2021.6.3可变参数(也叫不定项参数)递归(重要,不推荐使用)2021.6.5什么是数组数组声...
    99+
    2024-04-02
  • 【JavaEE】简单了解操作系统、进程&内存管理
    目录 前言:  一、操作系统: 操作系统的定位: 应用程序: 系统调用: 操作系统内核: 驱动程序: 硬件设备:  二、进程:  什么是进程?  进程的描述与组织:  描述: 组织: PCB中的 特征(属性) CPU分配——进程调度:  进...
    99+
    2023-09-02
    运维 服务器 java linux java-ee
  • Python打包exe文件一步步图解明了简单
    兄弟们,我来了!!! 实在是太忙了,没得时间更新,昨天下午这篇还是上周的草稿,太难了~ 当然,顺便再给它换个图标。 首先把你的代码准备好,尽量不要中文路径,容易报错。 这个是要用的...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作