当前位置:  技术问答>java相关

高手看看这样写的连接池有没有用?

    来源: 互联网  发布时间:2015-11-09

    本文导语:  //利用Oracle自带的连接池类的一例 /** 封装了对数据库的连接,用于处理SQL语句。 @author:yancheng(sharetop studio) @version:1.0.0 */ package poolConn; import java.sql.*; import java.io.*; import javax.sql.*; import javax.naming.*; import oracle.jdbc....

//利用Oracle自带的连接池类的一例

/**
封装了对数据库的连接,用于处理SQL语句。
@author:yancheng(sharetop studio)
@version:1.0.0
*/
package poolConn;

import java.sql.*;
import java.io.*;
import javax.sql.*;
import javax.naming.*;
import oracle.jdbc.pool.*;

public class OraPooledSQL
{

private PooledConnection dbpool;

/**
@param ConnectionURL 连接名 如: jdbc:odbc:myODBC
@param UserID 用户名
@param PassWord 用户密码
*/
public OraPooledSQL(String ConnectionURL,String UserID,String PassWord)
{

  try{

    OracleConnectionPoolDataSource ocpds = new OracleConnectionPoolDataSource();

    ocpds.setURL(/tech-qa-java/ConnectionURL/index.html);

    ocpds.setUser(UserID);

    ocpds.setPassword(PassWord);

    dbpool = ocpds.getPooledConnection();

  } catch(Exception ex) {
    System.err.println("Error in PooledSQL-construct : ");
    ex.printStackTrace(System.err);
  }
}//end OraPooledSQL

//close dbpool
protected void finalize()
{
  if( dbpool != null )
  {
    try
    {
      dbpool.close();
    }
    catch(Exception ex) {  ex.printStackTrace() ;   }
  }
}

/**
用于更新、添加或删除的SQL语句
@param SQL SQL语句字串,如:insert into tablename values(id,......)
*/
public int Update(String SQL)
{
  Statement stmt = null;
  int rc = 0;

  Connection connection = null;

  try
  {
    connection = dbpool.getConnection();
    stmt = connection.createStatement();
    rc = stmt.executeUpdate(SQL);
  }

  catch( Exception ex )
  {
    System.err.println("Error in Update - OraPooledSQL : ");
    ex.printStackTrace(System.err);
  }

  return rc;

} //end Update()


/**
用于查询的SQL语句
@param SQL SQL语句字串,如:select * from tablename
*/
public ResultSet Query(String SQL)
{
  Statement stmt = null;
  ResultSet rs = null;
  Connection connection = null;

  try
  {
    connection = dbpool.getConnection();
    stmt = connection.createStatement();
    rs = stmt.executeQuery(SQL);
  } catch( Exception ex )
  {
    System.err.println("Error in Query - SQLBean : ");
    ex.printStackTrace(System.err);
  }

  return rs;

} //end Query


} //end Class

|
这只是对数据库的操作,不是连接池
我给你个连接池

package myclasses;
import java.sql.*;
import java.util.*;

public class ConnectionPoolBean
{
 static  String IP="192.168.0.101";
 private int checkedOut; //the number of connections being used
 
 private Vector freeConnections=new Vector();//the store of connections;
                                            //always use the first one 
 
 private int maxConn;//the up-bound of the connections available;  
                     // 0 denotes no up-bound

 private String sDBDriver = "oracle.jdbc.driver.OracleDriver";
 private String sConnStr = "jdbc:oracle:thin:@billing:1521:hanzhou1";

 public static String getWebIP()    //initialization
 {       
    return IP;
 }

 public ConnectionPoolBean()    //initialization
 { 
    checkedOut=0;
    maxConn=1; 
 }


 
 public synchronized void freeConnection(Connection con)
          //return a connection to the ConnectionPool
 {
  freeConnections.addElement(con);  
  checkedOut--; 
 }  
 
 public synchronized Connection getConnection() throws Exception
                   //to get a usable connection; 
                   // if returnvalue=null, then no connection available
 {
   Connection con=null;
   if (freeConnections.size()>0) //there are connections which can be reused
   {
    con=(Connection)freeConnections.firstElement();
                            //get the first available connection 
    freeConnections.removeElementAt(0);
                            //remove it from the connectionPool
    try
    {
     if (con.isClosed())    //if the connection is closed
     {
      con=getConnection();
     }         
    } 
    catch(SQLException e)  //if the connection is not valid
    {
      con=getConnection();  
    }     
  }
  else  //if there are no existing connections, then create a new one
   if (maxConn==0 || checkedOut

    
 
 

您可能感兴趣的文章:

  • 有没有玩的转LINUX源码的高手?
  • 有没有robocode的高手 留个联系方法
  • linux内核里面的所有头文件,有没有整理过的,请高手指点!谢谢!!!
  • 请问高手们,有没有一款工具可以测试内核内存泄露的?
  • 有没有高手知道linux系统定制(最小化定制)的?(在线守候)请您提供一点相关资料,谢谢!
  • 有没有办法在JSP中刷新页面?请高手指点。
  • 有没有用微软的MSN聊天的JAVA高手。。。。。大家用这个交流好吗??
  • 有没有懂tc的高手来帮帮忙?拜托拜托
  • 有没有真正的高手知道jTable的用法请给个例子好吗?(极高分)
  • 有没有人在安装时遇到这样的问题,请高手帮忙.
  • 有没有xen方面的高手啊~~~教教小弟呗
  • 有没有高手提供以下方法:要将在Graphics存储成本地图像文件,怎么办?
  • 有没有高手在joybook 3000 c-06上装成linux?
  • weblogic或EJB高手有没有啊?
  • 高分请教高手:有没有人在Linux下玩过把网页转化成图片
  • 请问JAVA中有没有类似C中__FILE__,__LINE__这样的变量。C高手才知道吧
  • 再问一次怎么给可执行的jar文件换个图符?有没有高手?
  • 要做一个在applet,实现可以托拽的图形(比如长方形和线段等)?那位高手有资料?或者有没有java的第三方类库实现此功能?
  • 有没有哪位高手教我如何装猫在LINUX下????
  • 有没有操作系统高手?
  • 在dos下用bc31挑战高手******开发mssql程序,连接时报link err:undefined symbol GETNOTE in module DBEXTERN?(挑战高手)
  • ftp连接问题,就是linux连接windows ftp的问题,高手请进(在线等待)!!!!!
  • 高手救命,很急——ORACLE817安装在UNIXWARE711上,手工启动数据库后在netasst中连接错误,高手帮我看看?
  • 请问诸位高手:如何在服务器上得到正在连接的客户端IP??
  • 请问高手,在SCO UNIX系统下如何编译共享连接库(*.so)
  • 如何在服务端控制客户连接,请高手指点!
  • 关于RMI的连接的一个问题,请各位高手指导一下
  • 跪求UNIX 下C用OCI连接ORACLE方法。高手进!!!
  • 高手请帮忙, weblogic与JB5的连接问题。
  • linux内核里面的所有头文件,有没有整理过的,请高手指点!谢谢!!! iis7站长之家
  • 高手请进,C连接mysql的问题。
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 各个高手看看这个问题!本人第一次学习java所以要各位高手的帮助。。
  • linux高手看看
  • 请问哪位高手可以帮我远程看看Fedora的安装
  • 高手帮我看看这个错误怎么解决?
  • 高手帮忙看看cr3的值
  • shell 编程 从0到10求和 ,代码有错,请高手看看
  • 郁闷?高手帮看看
  • samba啟動出錯,高手請幫忙看看,謝謝!
  • 关于线程的问题,还请各位高手们能帮着看看
  • 高手请进来看看!
  • 高手看看这段代码错在哪里
  • 有高手看看我提的问题么?
  • 我的resin启动不了,请各位高手帮我看看!
  • linux 启动错误,高手看看怎么回事~~谢
  • 高手们请帮我看看为什么会这样?//在线等候
  • 高薪求Linux开发高手,可兼职,有开发经验的进来看看
  • ubuntu8.04 不能上网和关于update的问题(麻烦高手帮忙看看)
  • 菜鸟,高手都看看,帮帮忙啊,关于密码验证的问题
  • 各位高手,请教一个gcc编译的问题。大家都进来看看!
  • javamail高手看看这个。http://www.csdn.net/expert/topic/586/586408.xml?temp=.2403833。我把帖子结了。。。
  • 高手,高手,高高手请进!
  • 有熟悉EXIM的高手高手么??
  • to 高手:学java应该怎样一步步学习,从菜鸟到高手.
  • 高分请高手,高手定能解决
  • 请问高手在linux中用什么命令可以做linux的启动盘???在等待高手??
  • 有高手研究Agent++麽?里面有个thread.h,蛮难读的,请高手指点
  • 难道高手区里的人就是高手?
  • 真正的linux高手,请看过来,看你符合高手标准不?
  • 难道这没有高手吗?难道这没有乐于助人的高手?(高分酬谢62+50+50)
  • 关于我对linux高手用yum,非高手用源码的理由
  • 请教高手lvs的奇怪问题,我挺着急,希望高手别潜水,就就我,先谢谢了


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3