JDBC使用连接池技术访问oracle

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JDBC使用连接池技术访问oracle相关的知识,希望对你有一定的参考价值。

使用连接池访问数据库之前需要导入相关的jar包,

首先需要导入Oracle的驱动包,一般在安装Oracle数据库的目录下就有,读者的目录下就有一个ojdbc6.jar的驱动包。

然后再需要导入和连接池相关的jar包,比如:commons-dbcp-1.4.jar,和commons-pool-1.5.6.jar包。

下面是一个使用连接池包装好的工具包:

技术分享
driverClassName=oracle.jdbc.OracleDriver
url=jdbc:oracle:thin:@localhost:1521:xe
password=517839
username=system
db.properties

注意:这个db.properties文件不可以随便更改,因为driverClassName,url,password,username这几个值恰好可以和包装类里面的属性名称保持了一致,如果不一致可以使用如下的方法进行设置:

setDriverClassName()
setUrl()
setUsername()
setPassword()
技术分享
package com.xdl.util;

import java.io.IOException;
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.sql.DataSource;

import org.apache.commons.dbcp.BasicDataSourceFactory;

public class DBCPUtilProperties {
    private  static  DataSource   datasource;
    static {
        InputStream  inputStream = DBCPUtilProperties.class
            .getClassLoader().getResourceAsStream("db.properties"); 
        Properties  pro  = new Properties();
        try {
            pro.load(inputStream);
            datasource = BasicDataSourceFactory.
                    createDataSource(pro);
            /**
             * 也可以设置驱动,用户名,账号,密码,如果db.properties里的属性名称改变了,可以通过下面的方式手动设置
             * datasource.setDriverClassName(pro.getProperty("driverClassName"));
             * datasource.setUrl(pro.getProperty("url"));
             * datasource.setUsername(pro.getProperty("username"));
             * datasource.setPassword(pro.getProperty("password"));
             */
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        
    }
    public   static  Connection  getConnection(){
        try {
            return  datasource.getConnection();
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        return  null;
    }
    public  static  void  releaseResource(Connection conn,Statement st,ResultSet rs){
        if(rs != null) {
            try {
                rs.close();
            } catch (SQLException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }finally{
                rs = null;
            }
        }
        if(st != null) {
            try {
                st.close();
            } catch (SQLException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }finally{
                st = null;
            }
        }
        if(conn != null) {
            try {
                conn.close();
            } catch (SQLException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }finally{
                conn = null;
            }
        }
    }
    
}
DBCPUtilProperties.java

DBCPUtilProperties.java中包装好了加载驱动,获得连接,释放资源。

下面是一个测试类:

技术分享
package com.xdl.test;

import java.sql.Connection;

import com.xdl.util.DBCPUtilProperties;

public class DBCPUtilPropertiesTest {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Connection  conn = DBCPUtilProperties.getConnection();
        System.out.println(conn);
    }
}
DBCPUtilPropertiesTest.java

 

以上是关于JDBC使用连接池技术访问oracle的主要内容,如果未能解决你的问题,请参考以下文章

福利JDBC与连接池有何关系?内附JDBC技术学习资料

java程序访问数据库,dbcp连接池,hibernate连接总是报池连接用光了/JDBC连接没有报错

Java做数据库连接池的时候加载oracle的JDBC驱动时总是提示找不到驱动类

Tomcat/数据库设置 - JDBC 连接池

带有数据库链接的 Oracle JDBC 连接池

java代码实现数据源切换(连接池简单粗暴)