- 浏览: 425293 次
- 性别:
- 来自: 深圳
文章分类
最新评论
-
xiesbao:
找到了,太坑爹了。
Intellij Idea 滚动条跳动的问题 -
hvang1988:
按照你说的例子,主备说的是dbtest1,dbtest2,db ...
阿里开源Mysql分布式中间件:Cobar -
hvang1988:
问个问题:一个数据库的表的全部数据只分布在一个cobar上。多 ...
阿里开源Mysql分布式中间件:Cobar -
SiKing:
多谢,一直被这个问题困扰
Intellij Idea 滚动条跳动的问题 -
guodage003:
多谢 解决了这个蛋疼的问题。。
Intellij Idea 滚动条跳动的问题
引用
很多时候我们都要操作数据库,高效数据库操作的第一步就是在数据库连接上面,要体现高效,数据库连接池就不可少的了。以下是我工程使用的oracle9i以上版本的数据库连接池。使用的oracle连接jar包在附件中,SlcxLogger.java类在我之前的博客《log4j介绍、配置与使用》中。
import java.io.FileInputStream; import java.sql.Connection; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; import java.util.Properties; import org.apache.log4j.Logger; import com.slcx.log.SlcxLogger; import oracle.jdbc.pool.OracleConnectionCacheManager; import oracle.jdbc.pool.OracleDataSource; /** * Oracle数据库链接池。 * * @作者 华龙 * * @日期 2010-01-05 */ public class OraConnPool { //是否初始化 private static boolean initStatus = false; //连接数据源 private static OracleDataSource orads = null; //连接池日志 private static Logger logger=SlcxLogger.getLogger(OraConnPool.class); public synchronized static Connection getConnection() { // 加载默认的配置,配置文件跟类文件在同意一个包 return getConnection(null); // 加载自定义的配置 // return getConnection("./config/connpool.properties"); } public static Connection getConnection(String properties) { if (initStatus == false) { initial(properties); } Connection conn = null; if (orads != null) { try { conn = orads.getConnection(); } catch (SQLException e) { logger.error("获取一个数据库连接异常",e); } } while (conn == null) { try { Thread.sleep(1000*10); } catch (InterruptedException e) { logger.error("连接池线程休眠异常",e); } initial(properties); try { conn = orads.getConnection(); } catch (SQLException e) { logger.error("获取一个数据库连接异常",e); } } // try { // OracleConnectionCacheManager occm = OracleConnectionCacheManager // .getConnectionCacheManagerInstance(); // logger.debug("得到 slcx 缓存中激活的连接:" // + occm.getNumberOfActiveConnections("slcx") + " 可用的链接:" // + occm.getNumberOfAvailableConnections("slcx") + " 线程的编号:" // + Thread.currentThread().getId()); // } catch (Exception e) { // logger.error("输出连接池信息错误", e); // } return conn; } /** * 初始化数据库连接池数据源 */ public static void initial(String properties) { //关闭ORA数据库链接数据源 if (orads != null) { try { orads.close(); } catch (Exception e) { logger.info("关闭数据源异常",e); } orads = null; } try { Properties props = new Properties(); if(properties!=null){ //加载默认数据连接池配置文件。 props.load(new FileInputStream(properties)); } else{ //加载自定义数据连接池配置文件。 props.load(OraConnPool.class.getResourceAsStream("connpool.properties")); } //获取数据库连接池:链接URL,账号,密码 String url = props.getProperty("url"); String username = props.getProperty("username"); String password = props.getProperty("password"); orads = new OracleDataSource(); //设置数据库连接池:链接URL,账号,密码 orads.setURL(url); orads.setUser(username); orads.setPassword(password); //设置连接缓存是否可用,这里设置true orads.setConnectionCachingEnabled(true); //设置其他连接缓存配置 orads.setConnectionCacheProperties(props); //为连接池的高速缓存取个名字 orads.setConnectionCacheName("slcx"); initStatus = true; } catch (Exception e) { initStatus = false; logger.error("初始ORACLE数据源异常",e); } } /** * 关闭各种有关数据库操作对象 * @param rs 结果集对象 * @param stmt SQL处理对象 * @param conn 数据连接对象 */ public static void closeAll(ResultSet rs,Statement stmt,Connection conn){ try { if(rs!=null){ rs.close(); rs=null; } } catch (Exception e) { logger.error("关闭查询结果对象异常",e); } try { if(stmt!=null){ stmt.close(); stmt=null; } } catch (Exception e) { logger.error("关闭处理SQL语句对象异常",e); } try { if(conn!=null){ conn.close(); conn=null; } } catch (Exception e) { logger.error("关闭数据库连接异常",e); } } public static void main(String[] args) { Connection conn = getConnection(); long start = System.currentTimeMillis(); for (int i = 0; i < 100000; i++) { conn = getConnection(); try { conn.close(); } catch (SQLException e) { e.printStackTrace(); } } long end = System.currentTimeMillis(); System.out.println((end - start)); } } // 配置文件名“connpool.properties”,具体内容如下: #数据库链接URL url=dbc:oracle:thin:@192.168.0.8:1521:slcx #数据库链接用户名和密码 username=用户名 password=密码 #url=dbc:oracle:thin:@10.0.0.14:1521:fetch #username=用户名 #password=密码 #初始连接数大小 InitialLimit=2 #最小连接数 MinLimit=2 #最大链接数 MaxLimit=20 #不活动的超时时间 InactivityTimeout=1800 #被抛弃的链接超时 AbandonedConnectionTimeout=900 #属性检查相隔时间 PropertyCheckInterval=60 #链接等待超时时间 ConnectionWaitTimeout=100 #高速缓存的名称 ConnectionCacheName=slcx
- ojdbc5.jar (1.8 MB)
- 下载次数: 9
发表评论
-
深入理解Java内存模型
2014-11-08 16:54 977深入理解Java内存模型(一)——基础深入理 ... -
阿里开源Mysql分布式中间件:Cobar
2014-08-12 11:54 64347这几天研究 ... -
今日开源介绍:Google Guava、Google Guice、Joda-Time
2014-08-11 11:55 18189一、Guava 是一个 Google 的基于java1.6的 ... -
Jackson 动态过滤属性
2014-06-20 16:15 2981在把java对象转换为json时,有时需要依据需求动态过滤掉 ... -
自实现CAS原理JAVA版,模拟下单库存扣减
2014-04-02 17:47 6992在做电商系统时,库存 ... -
JAVA逻辑判断工具类
2013-09-06 21:33 1691在开发过程中,经常需要对“对象”、Map、Collecti ... -
Servlet2.4 监听器
2011-06-17 17:48 1524Servlet API提供了基本的应用程序事件监听器接口。编程 ... -
JSP页面编译成Servlet类文件过程中所涉及到的编码问题
2011-02-23 12:16 2841当请求一个JSP页面时,一般的都需要经历下面几个阶段: 1 ... -
Java中的字符集编码入门(六)Java中的增补字符
2011-02-23 12:11 1431Java号称对Unicode提 ... -
Java中的字符集编码入门(五)Java代码中的字符编码转换
2011-02-23 12:08 1111如果你是JVM的设计者,让你来决定JVM中所有字符的表 ... -
Java中的字符集编码入门(四)网页文件的编码
2011-02-23 12:03 1069接着上节的思路说,一个网页要想在浏览器中能够正确显示,需要在三 ... -
Java中的字符集编码入门(三)GB2312,GBK与中文网页
2011-02-23 12:02 1229GB2312是对中国的开发人员来说很重要的一个词汇,它的来龙去 ... -
Java中的字符集编码入门(二)编码字符集与字符集编码的区别
2011-02-23 12:01 900需要再一次强调的是, ... -
Java中的字符集编码入门(一)Unicode与UCS的历史恩怨
2011-02-23 11:59 1019ASCII及相关标准 ... -
方便管理工程中的SQL语句
2010-10-13 17:13 1781引用 之前在项目开发时候,经理要求把所有的SQL语句挑出 ... -
常见通信名称缩写解释
2010-09-03 16:05 2288引用 在看新闻时,购买手机时,经常听到关于通信方面的一 ... -
飞信维脉系统(定时短息发送系统)
2010-08-01 21:27 1552引用 因为工作原因 ... -
HTTP协议介绍
2010-07-28 09:45 789引用 HTTP(HyperTextTransferPro ... -
Java调用存储过程举例
2010-07-23 18:22 883Java调用oracle存储过程的示例总结如下。 ... -
不区分大小写查找字符串(二)
2010-03-25 20:56 2276引用 上次发表了自己编写不区分大小查找的方法,这次使用了 ...
相关推荐
java oracle 数据库 连接池 小例子 里面很详尽的使用C3p0,配置文件, 可以成功运行, 只需要修改一下配置文件里面的驱动就好了
JAVA 使用数据库连接池连接Oracle数据库,全代码,附加详细说明
介绍tomcat6.0中,配置oracle数据库连接池的步骤
这是用连接池技术管理连接oracle数据库的工具类代码,如果想连接MySQL,直接修改配置文件即可。
JDBC连接池 用JAVA写的连接数据库的代码 JDBC连接池 用JAVA写的连接数据库的代码
weblogic+Oracle数据库连接池的配置问题
Tomcat下对Oracle 10g数据库连接池数据源的配置
数据库连接池,连接数过多
连接的是oracle 11g,配置成功,查询,更新,都测试成功了
python-oracledb的源码和使用示例代码, python-oracledb 1.0,适用于Python versions 3.6 through 3.10. Oracle Database; This directory contains samples for python-oracledb. 1. The schemas and SQL ...
详尽的数据库连接池配置方法,主要是利用tomcat6.0+oracle,利用第三方dbcp-jar包,可以取得当前连接数。
数据库连接池在Oracle数据库中的实现.docx
详细介绍常用Java各数据库连接池配置,包括C3P0,DBCP,Proxool等。
WebSphere中流行数据库连接池的配置
weblogic与oracle数据库通过连接池连接及测试代码 另有myeclipse中weblogic服务器下使用jsf1.2的设置步骤
个人开发的通过OCI、OTL操作Oracle数据库类,其改版已成功应用在商业项目中,经观察很稳定,支持批量导入记录,实际应用中个人PC上3秒大概可存储12000条记录。 这是初步开发的类库,建议根据实际情况适当修改!另外...
数据库连接池 java 整理 oracle数据库
C#连接Oracle数据库(直接引用dll使用)Oracle.ManagedDataAccess,无需装Oracle数据库
oracle 数据库,在C++中用连接池实现高速连接与访问.rar
Oracle数据库的C3P0连接池,附带源码,官方下载 ,源码可读。不会出现第三方,亲测实用。