java类调用第三方连接池 (c3p0)

原创 2011年01月18日 16:32:00

 

 

1、首先编写db_cn.properties属性文件

 

DB.DRIVER=oracle.jdbc.driver.OracleDriver
DB.URL=jdbc/:oracle/:thin/:@192.168.1.162/:1521/:ora10g
DB.USER=new_lottery
DB.PWD=new_lottery
DB.AcquireIncrement=1
DB.InitialPoolSize=1
DB.MaxPoolSize=3
DB.MinPoolSize=1
DB.MaxIdleTime=120
DB.MaxStatements=180
DB.IdleConnectionTestPeriod=3600

存储数据库连接的相关配置

 

2、编写测试java-----DataHandling类。

 

 

package com.diagram.basis.common.db;

import java.sql.Connection;
import java.util.Date;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;

import com.diagram.basis.common.util.CFG;
import com.mchange.v2.c3p0.ComboPooledDataSource;

/**
 * 数据处理工具类
 *
 * @author Administrator
 */
public class DataHandling {

 private static Log log = LogFactory.getLog("DataHandling");
 
 private static CFG cfg = new CFG();
 /**
  * C3P连接池对象
  */
 private static ComboPooledDataSource cpds = null;
 /**
  * 数据库驱动名称
  */
 private static final String DB_DRIVER = cfg.getMessage("DB.DRIVER", "/db_cn.properties");
 /**
  * 数据库连接URL
  */
 private static final String DB_URL = cfg.getMessage("DB.URL", "/db_cn.properties");
 /**
  * 数据库连接用户
  */
 private static final String DB_USER = cfg.getMessage("DB.USER", "/db_cn.properties");
 /**
  * 数据库连接密码
  */
 private static final String DB_PWD = cfg.getMessage("DB.PWD", "/db_cn.properties");
 /**
  * 缺省构造函数
  */
 static {
  cpds = getInstance();
 }

 /**
  * @return ComboPooledDataSource
  */
 private synchronized static ComboPooledDataSource getInstance() {
  if (cpds == null) {
   cpds = new ComboPooledDataSource();
   cpds.setAcquireIncrement(new Integer(cfg.getMessage("DB.AcquireIncrement", "/db_cn.properties")).intValue());
   cpds.setInitialPoolSize(new Integer(cfg.getMessage("DB.InitialPoolSize", "/db_cn.properties")).intValue());
   cpds.setMaxPoolSize(new Integer(cfg.getMessage("DB.MaxPoolSize", "/db_cn.properties")).intValue());
   cpds.setMinPoolSize(new Integer(cfg.getMessage("DB.MinPoolSize", "/db_cn.properties")).intValue());
   cpds.setMaxIdleTime(new Integer(cfg.getMessage("DB.MaxIdleTime", "/db_cn.properties")).intValue());
   try {
    cpds.setDriverClass(DB_DRIVER);
   } catch (Exception e) {
    log.error("setdriverclass error", e);
   }
   cpds.setJdbcUrl(DB_URL);
   cpds.setUser(DB_USER);
   cpds.setPassword(DB_PWD);
   cpds.setMaxStatements(new Integer(cfg.getMessage("DB.MaxStatements", "/db_cn.properties")).intValue());
   cpds.setIdleConnectionTestPeriod(new Integer(cfg.getMessage("DB.IdleConnectionTestPeriod", "/db_cn.properties")).intValue());
  }
  return cpds;
 }

 /**
  * 取得数据库的连接
  *
  * @return Connection
  * @throws Exception
  */
 public Connection getConnection() throws Exception {
  
  Connection connection = null;
  try {
   Date before = new Date();
   connection = cpds.getConnection();
   Date after = new Date();
   log.info("-------time costed: "
     + (after.getTime() - before.getTime()));
   // 设置非自动提交模式
   connection.setAutoCommit(false);
  } catch (Exception e) {
   log.error("getconnection error", e);
   throw e;
  }
  return connection;
 }

 public static void main(String[] args) {
  DataHandling datahandling = new DataHandling();
  Connection con = null;
  int i = 0;
  while (i < 50) {
   java.util.Date before = new java.util.Date();
   try {
    con = datahandling.getConnection();
   } catch (Exception e) {
    e.printStackTrace();
   }
   try {
    con.close();
   } catch (Exception e) {
    e.printStackTrace();
   }

   java.util.Date after = new java.util.Date();
   log.info("-------time costed: "
     + (after.getTime() - before.getTime()));
   i++;
  }
 }
}

 

 

3、读取属性文件的帮助类CFG.java

 

/*
 * shining
 * */
package com.diagram.basis.common.util;

import java.io.IOException;
import java.io.InputStream;
import java.io.UnsupportedEncodingException;
import java.util.Properties;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;

/**
 * @author  黄波涛
 * @version 1.1
 *
 */

public class CFG {
 
 private static Log log = LogFactory.getLog(CFG.class);
 
 private static IO iostream = new IO();
 
 private static StrReplace strreplace = new StrReplace();

 /**
  * @integer 读取KEY值
  * @param   key
  * @return
  */
 public String getMessage(String key) {
  String message = null;
  Properties properties = new Properties();
  InputStream is = getClass().getResourceAsStream(
    "/language_cn.properties");
  try {
   properties.load(is);
  } catch (IOException e) {
   log.error("getMessage() fail", e);
  }
  message = properties.getProperty(key);
  try {
   message = new String(message.getBytes("iso-8859-1"), "utf-8");
  } catch (UnsupportedEncodingException e) {
   log.error(e);
  }

  return message;
 }
 
 /**
  * @integer 读取指定文件的KEY值
  * @param   key
  * @param   uri
  * @return
  */
 public String getMessage(String key,String uri) {
  String message = null;
  Properties properties = new Properties();
  InputStream is = getClass().getResourceAsStream(
    uri);
  try {
   properties.load(is);
  } catch (IOException e) {
   log.error("getMessage() fail", e);
  }
  message = properties.getProperty(key);
  try {
   message = new String(message.getBytes("iso-8859-1"), "utf-8");
  } catch (UnsupportedEncodingException e) {
   log.error(e);
  }

  return message;
 }
 
 /**
  * @integer 读取指定文件的KEY值,并设定编码方式。
  * @param   key
  * @param   uri
  * @param   encoding
  * @return
  */
 public String getMessage(String key,String uri,String encoding) {
  String message = null;
  Properties properties = new Properties();
  InputStream is = getClass().getResourceAsStream(
    uri);
  try {
   properties.load(is);
  } catch (IOException e) {
   log.error("getMessage() fail", e);
  }
  message = properties.getProperty(key);
  try {
   message = new String(message.getBytes("iso-8859-1"), encoding);
  } catch (UnsupportedEncodingException e) {
   log.error(e);
  }
  return message;
 }
 
 public Integer put(String key,String value){

  Properties properties = new Properties();
  InputStream is = getClass().getResourceAsStream(
    "/language_cn.properties");
  try {
   properties.load(is);

   //iostream.writeFile(uri, filename, suffix, filecontent);
   
   
  } catch (IOException e) {
   log.error("getMessage() fail", e);
   return -1; //返回1表示失败
  }
  
  return 0; //返回0表示成功
 }
 
 public static void main(String[] args){

 }
}

4 、加入c3p0包

   

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

java 数据库常用连接池框架使用 C3P0、proxool

网页程序肯定用到数据库,而数据库连接数据量大时肯定创建连接/断开连接要消耗不少系统资源,故一个数据库的连接池很重要。 以.NET里的ado.net框架内置的连接池为例,当第一次连接某个数据库时,以连...

java c3p0连接池实例

  • 2016-07-12 15:03
  • 1.75MB
  • 下载

JAVA工程使用C3P0连接池配置+单例引用示例

大部分c3p0连接池都是在web工程中配置使用 以下是自己实现的c3p0在Java工程中应用的简单示例   1. 导入jar包   2. src下创建配置文件c3p0-config.xml ...

java开源数据库连接池C3P0配置详解

3    30    1000    false    属性preferredTestQuery将被忽略。你不能在这张Test表上进行任何操作,它将只供c3p0测试 ...

记性不如烂笔头22-JAVA数据库连接池 C3P0

C3P0是一个开源的JDBC连接池,它实现了数据源和JNDI绑定,支持JDBC3规范和JDBC2的标准扩展。目前使用它的开源项目有Hibernate,Spring等。C3P0数据源在项目开发中使用得比...
  • ffm83
  • ffm83
  • 2015-02-03 17:21
  • 943

Java数据库连接池2——c3p0

Java数据库连接池2——c3p0主要内容1、用纯Java方式获取连接池 2、从配置文件中拿连接池 3、自己做一个c3p0的Utils,用于包装一个ThreadLocal 附录:所有要用到...

java 数据库连接池 c3p0 使用及参数详解,支持重连

//数据库连接池  单例模式 import java.sql.Connection; import java.sql.SQLException; import com.mchange.v...
  • Orehs
  • Orehs
  • 2013-10-15 17:49
  • 980
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)