文档章节

Java 获取各种主流数据库连接池连接信息的方法

废柴大叔
 废柴大叔
发布于 2014/10/10 16:32
字数 179
阅读 69
收藏 0
package com.gb.core.util;

import javax.sql.DataSource;

import org.apache.log4j.Logger;
import org.enhydra.jdbc.pool.StandardPoolDataSource;
import org.enhydra.jdbc.standard.StandardConnectionPoolDataSource;
import org.logicalcobwebs.proxool.ProxoolDataSource;
import org.springframework.jdbc.core.JdbcTemplate;

import com.alibaba.druid.pool.DruidDataSource;
import com.mchange.v2.c3p0.ComboPooledDataSource;

/**
 * <p>Title: </p>
 * <p>desc:
 * <p>Copyright: Copyright(c)Gb 2011</p>
 * @author www.bejson.com
 * @time 2011-8-23 上午10:37:35
 * @version 1.0
 * @since
 */
public class DBUtil {
	public static  String showDBInfo(JdbcTemplate jdbcTemplate){
		try {
			DataSource ds =   jdbcTemplate.getDataSource();
			String driver = "";
			String connectInfo="";
			String user="";
			String password="";
			if(ds instanceof StandardPoolDataSource){
			StandardPoolDataSource sd = (StandardPoolDataSource)ds;
			StandardConnectionPoolDataSource scd = (StandardConnectionPoolDataSource)sd.cpds;
				driver = scd.getDriverName();
				connectInfo =  scd.getUrl();
				user = sd.getUser();
				password = sd.getPassword();
			}else if(ds instanceof DruidDataSource){
				DruidDataSource dds = (DruidDataSource)jdbcTemplate.getDataSource();
				driver = dds.getDriverClassName();
				connectInfo =  dds.getUrl();
				user = dds.getUsername();
				password = dds.getPassword();
			} else if(ds instanceof ProxoolDataSource){
				ProxoolDataSource  db = (ProxoolDataSource)jdbcTemplate.getDataSource();
				 password = 	db.getPassword();
				 user = db.getUser();
				 connectInfo = db.getDriverUrl();
			} else if(ds instanceof ComboPooledDataSource){
				ComboPooledDataSource  db = (ComboPooledDataSource)jdbcTemplate.getDataSource();
				driver = 	db.getDriverClass().toLowerCase();
				connectInfo = db.getJdbcUrl();
				user = db.getUser();
				password =db.getPassword();
			}
		
			return " url:"+connectInfo+" user:"+user+" password:"+password;
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}

		return "";
	}
	
	private static Logger log = Logger.getLogger(DBUtil.class);
}



© 著作权归作者所有

废柴大叔

废柴大叔

粉丝 53
博文 111
码字总数 43127
作品 0
苏州
高级程序员
私信 提问
主流Java数据库连接池比较及前瞻

本文转载自微信公众号「工匠小猪猪的技术世界」 主流数据库连接池 常用的主流开源数据库连接池有C3P0、DBCP、Tomcat Jdbc Pool、BoneCP、Druid等 C3p0: 开源的JDBC连接池,实现了数据源和JND...

渣渣(Charles)
2018/04/30
0
0
Spring之jdbc Template实现CRUD操作

Spring为各种持久化技术都提供了简单操作的模板回调。比如jdbc、hibernate、Mybatis以及JPA等。 这里我们就以JDBC为例,看看JDBC template怎么实现CRUD操作。 JdbcTemplate主要提供以下几类方...

Java攻城玩家
2018/05/31
0
0
析评数据库连接池(创世纪新篇)

学习Java语言,对于数据库连接池不陌生啦。例如,一个简单的数据库应用,由于对于数据库的访问不是很频繁。这时可以简单地在需要访问数据库时,就新创建一个连接,用完后就关闭它,这样做也不...

crossmix
2015/08/21
0
0
在tomcat中配置JNDI数据源 .

在tomcat5.0中配置数据源(全局数据源、局部数据源),通过连接池机制连接数据库 1. odbc-jdbc桥连 2. 通过加载本地驱动连接 3. 在web应用服务器中设置数据源,通过池接技术连接数据库(加载本...

漠、
2012/05/24
0
0
hibernate、c3p0、jdbc理解

大家好,请教大家概念问题,hibernate、c3p0、jdbc这三者是什么关系, 我的理解是:hibernate 是对jdbc的封装,可以面向对象(实体类)实现数据操作,jdbc就是java api提供的连接操作数据库的...

樱木花道VS康
2017/06/30
149
2

没有更多内容

加载失败,请刷新页面

加载更多

【AI实战】手把手教你深度学习文字识别(文字检测篇:基于MSER, CTPN, SegLink, EAST等方法)

文字检测是文字识别过程中的一个非常重要的环节,文字检测的主要目标是将图片中的文字区域位置检测出来,以便于进行后面的文字识别,只有找到了文本所在区域,才能对其内容进行识别。 文字检...

雪饼
48分钟前
3
0
思维导图XMind 8 Pro 绿化方法(附序列号)

按部就班: Step 1 -全新下载最新版本的 Xmind 8(注必须是英文官方的版本,中文代{过}{滤}理网站的版本修改过,无法使用pj); Step 2 -安装完毕后,点击文末的下载按钮下载pj补丁文件包,将...

一只小青蛙
今天
6
0
数据结构(ER数据库)设计规范

表命名规范 表命名的规则分为3个层级,层级之间通过_分割,例如b_r_identity、d_l_identity。规约为: [leavel]_[type]_[name] [leavel] 表示数据库表的层级和功能,分为: s:业务无关的系统...

随风溜达的向日葵
今天
5
0
阿里Sentinel控制台源码修改-对接Apollo规则持久化

https://github.com/alibaba/Sentinel/wiki/%E5%9C%A8%E7%94%9F%E4%BA%A7%E7%8E%AF%E5%A2%83%E4%B8%AD%E4%BD%BF%E7%94%A8-Sentinel 动态规则扩展 https://github.com/alibaba/Sentinel/wiki......

jxlgzwh
昨天
5
0
在Linux系统中创建SSH服务器别名

如果你经常通过 SSH 访问许多不同的远程系统,这个技巧将为你节省一些时间。你可以通过 SSH 为频繁访问的系统创建 SSH 别名,这样你就不必记住所有不同的用户名、主机名、SSH 端口号和 IP 地...

老孟的Linux私房菜
昨天
12
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部