resin+oracle

本文介绍了一个Java数据库连接池(DBPool)的实现方法,通过使用JNDI查找数据源,支持从配置文件读取数据源信息,实现了获取和释放数据库连接的功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

package com.zhen.database;
import com.zhen.util.*;

import java.io.InputStream;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Properties;

import javax.naming.InitialContext;
import javax.sql.DataSource;

public class DBPool{
 
 private static DBPool instance=null;
 private Connection con=null;
 
 private DataSource ds=null;
 
 public DBPool()throws Exception
 {
  //从属性文件中读取数据源名称
  InputStream in = getClass().getClassLoader().getResourceAsStream(
  "dataSource.properties");
  
        Properties prop = new Properties();
        prop.load(in);
       
        String name = prop.getProperty("DataSourceName");
       
        InitialContext ctx = new InitialContext();

        ds = (DataSource) ctx.lookup("java:comp/env/"+name);
        //InitialContext ctx=new InitialContext();

        //ds=(DataSource)ctx.lookup("java:comp/env/jdbc/ds");
 }
 
 public synchronized static DBPool getInstance()
 {
  try
  {
   if(instance==null)
   {
    instance=new DBPool();
   }
    return instance;
  }
  catch(Exception e)
  {
   e.printStackTrace();
   return null;
  }
 }
  
     public Connection getConnection(String name,Connection conn)throws SQLException
 {
  con=ds.getConnection();
  return con;
 } 
 
  public void freeConnection(String name,Connection con) {
   try
   {
    if(con!=null)
    {
     con.close();
    }
   }
   catch(SQLException e)
   {
    e.printStackTrace();
   }
  
  }
 
 public Connection getConnection()throws Exception
 {
  con=ds.getConnection();
  return con;
  /*try
  {
   String Driver="com.mysql.jdbc.Driver";
   String url="jdbc:mysql://localhost/uc";
   Class.forName(Driver);
   Connection con=DriverManager.getConnection(url,"root","root");
   return con;
  }
  catch(Exception e)
  {
   e.printStackTrace();
   return null;
  }*/
  /*try
  {
   String serverName="localhost";
   
   String driver="oracle.jdbc.driver.OracleDriver";
   
   String sConnStr="jdbc:oracle:thin:@"+serverName+":1521:oracle";
   
   Class.forName(driver);
   
   Connection con=DriverManager.getConnection(sConnStr,"scott","tiger");
   
   return con;
  }
  catch(SQLException e)
  {
   e.printStackTrace();
   throw e;
  }*/
  
 }
 
 public void CloseConenction(Connection con)
 {
  try
  {
   if(con!=null)
   {
    con.close();
   }
  }
  catch(SQLException e)
  {
   e.printStackTrace();
  }
 }
 
 public void CloseAllConnection()
 {
  try
  {
   if(con!=null)
   {
    con.close();
   }
  }
  catch(Exception e)
  {
   System.out.println(e.getMessage());
  }
 }

}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值