J2EE应用中与Oracle数据库的连接[转贴]

J2EE应用中与Oracle数据库的连接

作者:洪建

在J2EE应用程序开发中,应用程序与数据库连接的建立是我们经常遇到的问题之一。在这里我主要谈谈在本地应用程序中通过OCI方式、thin方式和JdbcOdbc桥方式连接Oracle数据库,在iPlanet Application Server 6.5和Sun Java System Application Server 7中对Oracle数据库连接池的配置以及应用中如何从连接池中获得连接。

一、本地通过JDBC获得Oracle数据库连接

通过JDBC获得Oracle数据库连接,有三种方式:OCI方式、thin方式和JdbcOdbc桥方式。OCI方式依赖于本地的动态链接库,如果在本地安装了Oracle数据库客户端可以采用该方式;而thin方式为纯java的数据库连接方式;JdbcOdbc桥方式依赖于本地ODBC数据库源的配置,这种方式一般不太被采用。

1、OCI方式

先在本地安装Oracle客户端,安装完之后,在安装的路径中可以找到…/jdbc/lib/classes12.zip文件,我们在环境变量classpath中设置classes12.zip所在的路径。

然后通过以下的数据库连接类,在本地通过OCI方式获得Oracle数据库连接。

/**
* 在本地获得数据库连接
*/

package com.j2ee.db;

import java.util.*;
import java.sql.*;
import javax.sql.*;
import java.io.*;
import oracle.jdbc.driver.*; 
import javax.naming.*;    

/**
* 通过OCI方式获得Oracle数据库连接
*/
public class DbConnection 
{
  final static String sDBDriver = "oracle.jdbc.driver.OracleDriver";
  final static String sConnStr = "jdbc:oracle:oci8:sr/sr@ora199";
  
  /**
  * 
  */
  public DbConnection() 
  {
  }
  
  /**
  * 获得Oracle数据库连接 
  */
  public java.sql.Connection connectDbByOci() 
  {  
	  java.sql.Connection conn=null;  
	  try
	  {
		  Class.forName(sDBDriver);
		  conn = DriverManager.getConnection(sConnStr);
	  }
	  catch (Exception e) 
	  {
	      System.out.println("ERROR:"+e.getMessage()); 
	  } 
	  return conn;
  }
}

在连接字符串 "jdbc:oracle:oci8:sr/sr@ora199" 中,"sr/sr"为Oracle用户的用户名和口令,"ora199"为数据库服务名。

2、thin方式

先到Oracle技术网(http://otn.oracle.com/global/cn/software/tech/java/sqlj_jdbc/index.html)下载Oracle JDBC Drivers,同样地将下载后的zip文件的路径设置在环境变量classpath。

然后通过以下的数据库连接类,在本地通过thin方式获得Oracle数据库连接。

/**
* 在本地获得数据库连接
*/

package com.j2ee.db;

import java.util.*;
import java.sql.*;
import javax.sql.*;
import java.io.*;
import oracle.jdbc.driver.*; 
import javax.naming.*;    

/**
* 通过thin方式获得Oracle数据库连接
*/
public class DbConnection 
{
	private	String sConnStr = "";
  
	/**
	* 缺省构造器
	*/
	public DbConnection() 
	{
		sConnStr = "jdbc:oracle:thin:@10.1.4.199:1521:ora199";
	}
	
	/**
	* @param ip,serviceName
	*/
	public DbConnection(String ip,String serviceName) 
	{
		sConnStr = "jdbc:oracle:thin:@"+ip+":1521:"+serviceName;
	}
  
	/**
	* 通过thin方式获得Oracle数据库的连接.
	*/
	public java.sql.Connection connectDbByThin() 
	{	  
		java.sql.Connection conn=null; 
		try
		{
			Class.forName(sDBDriver);
			conn = DriverManager.getConnection(sConnStr,"sr","sr");
		}
		catch (Exception e) 
		{
			System.out.println("ERROR:"+e.getMessage()); 
		} 
		return conn;
	}

	/**
	* 通过thin方式获得Oracle数据库的连接.
	* @param userId,password
	*/
	public java.sql.Connection connectByJdbc(String userId,String password) 
	{	  
		java.sql.Connection conn=null; 
		try
		{
			Class.forName(sDBDriver);
			conn = DriverManager.getConnection(sConnStr,userId,password);
		}
		catch (Exception e) 
		{
			System.out.println("ERROR:"+e.getMessage()); 
		} 
		return conn;
	}
}

这种方式运用起来比较灵活,简单,具有较强的移植性和适用性。只要注意连接字符串"jdbc:oracle:thin:@10.1.4.199:1521:ora199"中具体参数的设置即可。

3、JdbcOdbc桥方式

先通过管理工具中的数据源来添加本地对Oracle数据库的连接,然后通过以下的数据库连接类,在本地通过JdbcOdbc桥方式获得Oracle数据库连接。

/**
* 在本地获得数据库连接
*/

package com.j2ee.db;

import java.util.*;
import java.sql.*;
import javax.sql.*;
import java.io.*;
import oracle.jdbc.driver.*; 
import javax.naming.*;    

/**
* 通过JdbcOdbc桥方式获得Oracle数据库连接
*/
public class DbConnection 
{ 
  /**
  * 
  */
  public DbConnection() 
  {
  }
  
  /**
  * 获得Oracle数据库连接 
  */
  public java.sql.Connection connectDbByJdbcOdbcBridge() 
  {  
	  java.sql.Connection conn=null;  
	  try
	  {
		  Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
		  con=DriverManager.getConnection("jdbc:odbc:ora199","sr","sr");
	  }
	  catch (Exception e) 
	  {
	      System.out.println("ERROR:"+e.getMessage()); 
	  } 
	  return conn;
  }
}

在getConnection方法中第一个参数"jdbc:odbc:ora199" 中的"ora199"为本地ODBC数据源的数据源名称,第二个参数和第三个参数分别为Oracle的用户名和口令。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值