注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

千鸟

本blog所有日志均系原创 转载请注明出处

 
 
 

日志

 
 

代码:数据连接池,可选择数据源  

2007-03-14 19:37:11|  分类: J2EE |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

解释下:

1.ConnManager类 是管理连接池的类

2.DBConnection类 是读取property返回配置信息

3.property文件

2,3由梦想年华提供,感谢

/*
 * ConnManger.java
 *
 * Created on 2006年10月24日, 下午6:22
 *
 * To change this template, choose Tools | Template Manager
 * and open the template in the editor.
 */

package com.soulnew;

import java.io.*;
import java.sql.*;
import java.util.*;
import java.util.Properties;   


/**
 *
 * @author jzxl
 */
public class ConnManager {
   
    /** Creates a new instance of ConnManger */
    int minConn=2;
    int maxConn=100;     
     
    String logFile="../../dbpool.log";
    PrintWriter logout=null;
   
    int connAmount=0;
    Stack connStack=new Stack();
   
    private static ConnManager instance;
   
   
    public static synchronized ConnManager getInstance(){   //注册数据库驱动
       if(instance==null){
         instance=new ConnManager();
       }
       return instance;
    }
   public String getdataurl()        //获得连接url
   {
    
           String FileName="../../DBConfig.property";
  Properties prop= new Properties();
  try
  {
   InputStream is = getClass().getResourceAsStream(FileName);
   prop.load(is);
   if(is!=null) is.close();
                      return prop.getProperty("MySQLURL");
  }
  catch(Exception e) {                    
   System.err.print("Error!");
                        return "null";
  }
      
   }
   
    public synchronized Connection getConnection(){  //获得连接
   
        Connection conn=null;
        if(!connStack.empty()){
            conn=(Connection)connStack.pop(); //从连接池申请一个连接
            log("从连接池申请一个连接");
            log("现在可用的连接"+connStack.size());
        }else if(connAmount<maxConn){
            conn=newConnection();
            log("开辟一个新连接");
        }else{
        try{
            log("等待连接");
            wait(100000);
            return getConnection();
        }catch(Exception ie){}       
        }
        return conn;
    }
   
    public synchronized void freeConnection(Connection con){   //归还连接
   
        connStack.push(con);
        notifyAll();
        log("归还了一个连接到连接池");
    }
   
    public ConnManager() {
        try{
            logout=new PrintWriter(new FileWriter(logFile,true),true);           
        }catch(IOException e){
            System.err.println("无法打开日志文件"+logFile);
        }
       
        try{
           Class.forName("com.mysql.jdbc.Driver").newInstance();          
           
        }catch(Exception e){
        }
        for(int i=0;i<minConn;i++){
        connStack.push(newConnection());
        }
       
    }
    private Connection newConnection(){     //开辟新连接
        Connection con=null;
        try{
           // con=DriverManager.getConnection(url+user+password);
            con=DriverManager.getConnection(getdataurl());
            connAmount++;
            log("连接池创建了一个新连接");                   
        }catch(SQLException e){
        return null;
        }
       
    return con;
    }
   
    private void log(String msg){
       
        logout.println(new java.util.Date()+":   "+msg);
    }
   
    public static void main(String[] args) {
        ConnManager com=ConnManager.getInstance();      
       
        Connection conn[]=new Connection[10];
        for(int i=0;i<10;i++)
        conn[i]=com.getConnection();
        for(int i=0;i<10;i++){
        com.freeConnection(conn[i]);
        }
    }
   
   
}

/*

*

*

*
*

*/

package com.soulnew; //指定类所在的包
import java.sql.*;      //导入数据库操作的类
import java.util.*;
import java.io.*;

public class DBConnection     
{

    private String FileName;   //配置文件名
    private int DBType;     //数据库类型
  
    private Connection conn;   //连接对象
 private Statement stmt;    //语句对象
 private ResultSet rs;    //结果集对象
 
    private String AccessDriver;  //保存Access驱动程序
    private String AccessURL;    //保存Access连接字符串 
    private String AccessPath;    //保存Access数据库的路径 
   
    private String MySqlDriver;   //MYSQL Server驱动程序
    private String MySqlURL;    //MYSQL Server连接字符串
       
    private String SqlDriver;   //SQL Server驱动程序
    private String SqlURL;     //SQL Server连接字符串
   
    private String OracleDriver;  //Oracle驱动程序
    private String OracleURL;    //Oracle连接字符串
 
   
   
    public DBConnection()
    {
     conn = null;
    }

/* public  Connection getConn()
 {

  DBType= new Function().StrToInt(getPara("DBType"));
 
  switch(DBType)
  {
   case 0:return(getConnToAccess());
   case 1:return(getConnToMySql());
   case 2:return(getConnToSql());
   case 3:return(getConnToOracle());
   default:return null;
  } 
 }*/
 
 
 
 public String getPara(String ParaName)
 {
  FileName="../../DBConfig.property";
  Properties prop= new Properties();
  try
  {
   InputStream is = getClass().getResourceAsStream(FileName);
   prop.load(is);
   if(is!=null) is.close();
  }
  catch(Exception e) {
   return "Error!";
  }
  return prop.getProperty(ParaName);
 }
 
 
 
    public Connection getConnToAccess()
    {
  try{
      AccessDriver = getPara("AccessDriver");  
      AccessURL = getPara("AccessURL");
      AccessPath = getPara("AccessPath");
   AccessURL=AccessURL+AccessPath;
      Class.forName(AccessDriver).newInstance();
      conn = DriverManager.getConnection(AccessURL);
      }catch(Exception e){
       //e.printStackTrace();
       //return "操作数据库出错,请仔细检查" ;
       //System.err.println(e.getMessage());
      }
     return conn;
    }
    
    
    public Connection getConnToMySql()
    {
  try{
    MySqlDriver = getPara("MySQLDriver"); 
      MySqlURL = getPara("MySQLURL");
      Class.forName(MySqlDriver).newInstance();
      conn = DriverManager.getConnection(MySqlURL);
      }catch(Exception e){
       //e.printStackTrace();
       //return "操作数据库出错,请仔细检查" ;
       //System.err.println(e.getMessage());
      }
     return conn;
    }
   
 
 public Connection getConnToSql()
 {      
      try{
       SqlDriver = getPara("SQLDriver");
         SqlURL = getPara("SQLURL");
      Class.forName(SqlDriver).newInstance();
      conn = DriverManager.getConnection(SqlURL);
      }catch(Exception e){
       e.printStackTrace();
       //return "操作数据库出错,请仔细检查" ;
       //System.err.println(e.getMessage());
      }
     return conn;
    }
   
 
    public Connection getConnToOracle()
    {      
  try{
    OracleDriver = getPara("OracleDriver"); 
      OracleURL = getPara("OracleURL");
      Class.forName(OracleDriver).newInstance();
      conn = DriverManager.getConnection(OracleURL);
      }catch(Exception e){
       //e.printStackTrace();
       //return "操作数据库出错,请仔细检查" ;
       //System.err.println(e.getMessage());
      }
    return conn;
    }
   
     
   //关闭数据库连接
   /* public void Close()
    {
        try{
            Conn.close();
        }catch(SQLException sqlexception){
            sqlexception.printStackTrace();
        }
    }*/
   
   
    public static void main(String[] args)
 { 
  DBConnection DBConn = new DBConnection();
  String FileName="DBConfig.property";
  Properties prop= new Properties();
  try
  {
   InputStream is = DBConn.getClass().getResourceAsStream(FileName);
   prop.load(is);
   if(is!=null) is.close();
  }
  catch(Exception e) {
   
  }
  System.err.print(prop.getProperty("AccessPath"));
 /* try
  {
   Connection Conn = DBConn.getConn(); 
   ResultSet rs = null;
   Statement stmt = Conn.createStatement(1004,1007);
      String Sql = "select * from Admin where AdminName='dream' and AdminPwd='dream'";
      rs = stmt.executeQuery(Sql);
      rs.next();
      if (!rs.isAfterLast())
   {
    System.out.println(rs.getString("AdminName")+"登录成功!");
   }
   else
   {
    System.out.println("登录失败!");
   }
  }
  catch(SQLException e)
  {
   System.out.println(e.getMessage().toString());
  }*/
             //  String fd= DBConn.getPara("DBType");
      //  System.out.print(fd);
 }
   
}

 

/**

*

*

*

*/

#梦想年华JSP版新闻发布系统数据库配置文件
#请更改以下信息,以便正确连接数据库

#数据库类型:0为Access,1为MYSQL,2为MSSQL,请改成您用的数据库。默认为1。
DBType=1

#Access 数据库连接信息
#Access 驱动程序
AccessDriver=sun.jdbc.odbc.JdbcOdbcDriver

#Access 连接字符串。
AccessURL=jdbc:odbc:Driver={Microsoft Access Driver (*.mdb)};DBQ=

#Access 数据库名
AccessPath=D:/Server/Tomcat/webapps/news/WEB-INF/DreamNews.mdb


#MySQL 数据库连接信息
#MySQL 数据库驱动程序
MySQLDriver=org.gjt.mm.mysql.Driver

#MySQL数据库连接字符串。
#DreamTimeNews 为数据库名,user 为登录用户名,password 为登录密码。请自行更改。
MySQLURL=jdbc:mysql://localhost:3306/DreamTimeNews?user=root&password=admin&useUnicode=true&characterEncoding=GBK


#SQL Server 数据库连接信息
#SQL Server 驱动程序
SQLDriver=net.sourceforge.jtds.jdbc.Driver

#SQL Server 数据库连接字符串
#DreamTimeNews 为数据库名,user 为登录用户名,password 为登录密码。请自行更改。
SQLURL=jdbc:jtds:sqlserver://localhost:1433/DreamTimeNews;user=dreamnews;password=dreamnews


#Oracle数据库连接信息
OracleDriver=oracle.jdbc.driver.OracleDriver
OracleURL=jdbc:oracle:thin:@192.168.0.1:1521:SID
datasource.username=dreamnews
datasource.password=dreamnews

  评论这张
 
阅读(655)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017