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
{
privateString 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的用户名和口令。

二、通过连接池获得Oracle数据库连接

这部分主要讲述在iPlanet Application Server 6.5和Sun Java System Application Server 7中Oracle数据库连接池的配置,以及在应用中如何通过连接池获得数据库的连接。

1、iPlanet Application Server 6.5连接池的配置

先打开iPlanet Application Server 6.5的管理控制台,选中"database"面板,再选择"External JDBC Drivers"选项后,点击"Add…"按钮,在弹出的对话框中,添加一个名为"ora-type4"的JDBC Driver。

Driver Classpath:该参数填写classes12.zip文件的物理路径。

然后在"External JDBC DataSources"中选择"Add…",在弹出的对话框中添加一个JNDI名称为"credit2"的数据源。

DriverType:选择刚添加好的"ora-type4";

Datasource:ora199,为Oracle数据库服务名;

Connection Pool Parameters:图中显示的是缺省设置,可以根据自己环境情况来更改这些设置。

保存完设置后,在"DataSource Selection Box"中,选择刚添加的"credit2"数据源,再选择"Vendor Specific Properties"按钮。在对话中添加一个URL属性。

至此,iPlanet Application Server 6.5中的数据库连接池配置完毕,重起服务使之生效。

2、Sun Java System Application Server 7连接池的配置

在配置之前将classes12.zip文件置于…/server1/lib目录下。通过浏览器的4848端口打开Sun Java System Application Server 7的管理界面,选择"server1"->"JDBC"-> "Connection Pools"下的"New…"

添加一个名称为"MyConnectionPool"的Oracle数据库连接池。"Next"下一步。

在"General"中填写"Datasource Classname"。

在"Properties"中将不需要的属性删除,同时添加"URL"属性。

"dataSourceName"中填写Oracle数据库服务名。

以下连接池的缺省设置,可以根据自己环境的情况作相应的调整。

选择"Finish"完成连接池的设置。

下一步为"MyConnectionPool"连接池创建一个JNDI,以便应用程序能够通过该名称获得连接池中的连接。 "server1"->"JDBC"-> "JDBC Resources"下的"New…"

至此,Sun Java System Application Server7中的数据库连接池配置完毕,重起服务使之生效。

3、通过连接池获得连接

以上在iPlanet Application Server 6.5和Sun Java System Application Server7中配置的连接池都可以通过以下的数据库连接类,从连接池中获得Oracle数据库连接。

/**
* 从连接池中获得数据库连接
*/

package com.j2ee.db;

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

/**
* 通过连接池方式获得Oracle数据库连接
*/
public class DbConnection
{
/**
*
*/
public DbConnection()
{
}

/**
* 获得Oracle数据库连接
*/
public java.sql.Connection connectDbByConnectionPool()
{
java.sql.Connection conn=null;
try
{
Context ctx = new InitialContext();
DataSource ds = (DataSource)ctx.lookup("jdbc/credit2");
conn=ds.getConnection();
}
catch (Exception e)
{
System.out.println("ERROR:"+e.getMessage());
}
return conn;
}
}

4、使用连接池的优点

使用连接池的优点主要体现在两个方面:

对数据库的连接统一进行配置、管理、监控,以及对数据库连接池的参数进行优化调整,同时对应用中没有关闭或其他原因造成没有关闭的数据库连接由连接池统一进行管理。
便于应用的移植和后端数据库的切换,因为在应用中通过统一的JNDI获得数据库的连接,而具体连接的是哪一台机器上的数据库与应用无关。

时间: 2025-01-01 17:19:24

J2EE应用中与Oracle数据库的连接的相关文章

J2EE程序中使用oracle数据库LOB字段的总结(elathen)

j2ee|oracle|程序|数据|数据库 最近在J2EE的项目中需要使用LOB字段保存文本信息以及图片和文件,到网上搜拉一下,还不少,仔细看拉一下,但都不是很全有的还有错误,经过几天的实践,把问题都解决拉,顺便总结一下,希望对需要的朋友有点参考 LOB中我们用的比较多的主要有两种CLOB和BLOB,我们对两种类型分别讨论 1.CLOB是字符型LOB,主要存储文本信息,,最长为4G.,在J2EE程序中,比如网页的textarea中的字符信息比较长,Varchar2字段类型不能满足时,我们就得用C

plsql developer-如何访问另一台计算机中的oracle数据库

问题描述 如何访问另一台计算机中的oracle数据库 有两台笔记本,一个配置高一些,安装了Oracle数据库,另一台配置低一些,没有安装,该怎么配置可以使用plsql developer工具访问高配置电脑中的数据库呢?求大神解答,详细一点哈!本人有点笨,不胜感激! 解决方案 参考:http://blog.csdn.net/metal1/article/details/41799669http://www.jb51.net/article/48676.htm 解决方案二: 首先oracle数据库得

ASP高级技巧:在ASP中使用Oracle数据库

oracle|高级|技巧|数据|数据库 Oracle是世界上用得最多的数据库之一,活动服务器网页(ASP)是一种被广泛用于创建动态网页的功能强大的服务器端脚本语言.许多ASP开发人员一直在考虑,能否在开发互联网应用.电子商务网站.互联网管理系统时结合使用ASP和Oracle数据库?这个问题的答案是肯定的,我们还可以使用VB访问Oracle数据库.在本篇文章中,我们将主要讨论如何使用ASP来处理Oracle数据库中数据的方法. 在开始讨论这个问题前,我们需要了解几个背景知识,Oracle Obje

在ASP中使用Oracle数据库

Oracle是世界上用得最多的数据库之一,活动服务器网页(ASP)是一种被广泛用于创建动态网页的功能强大的服务器端脚本语言.许多ASP开发人员一直在考虑,能否在开发互联网应用.电子商务网站.互联网管理系统时结合使用ASP和Oracle数据库?这个问题的答案是肯定的,我们还可以使用VB访问Oracle数据库.在本篇文章中,我们将主要讨论如何使用ASP来处理Oracle数据库中数据的方法. 在开始讨论这个问题前,我们需要了解几个背景知识,Oracle Objects for OLE就是其中之一.Or

在ASP中使用Oracle数据库技巧(二)

如果已经真正地理解了我们在上面讨论的一些方法(Edit.Update和AddNew),也许有的读者已经知道该如何在Oracle数据库中删除记录了. <% '删除所有符合上面条件的记录  OraDynaset.Delete %> 在Oracle8i中搜索和更新数据记录的代码 1)搜索   <%          'RetriveRecProc.asp -使用ASP的Oracle Objects for OLE更新数据记录          %>        <%  '定义作为

在ASP中使用Oracle数据库技巧

Oracle是世界上用得最多的数据库之一,活动服务器网页(ASP)是一种被广泛用于创建动态网页的功能强大的服务器端脚本语言.许多ASP开发人员一直在考虑,能否在开发互联网应用.电子商务网站.互联网管理系统时结合使用ASP和Oracle数据库?这个问题的答案是肯定的,我们还可以使用VB访问Oracle数据库.在本篇文章中,我们将主要讨论如何使用ASP来处理Oracle数据库中数据的方法. 在开始讨论这个问题前,我们需要了解几个背景知识,Oracle Objects for OLE就是其中之一.Or

数据库服务器-什么情况下会出现oracle数据库自身连接超出最大连接数 ----急急急!!!

问题描述 什么情况下会出现oracle数据库自身连接超出最大连接数 ----急急急!!! 5C 这些天一直被这个问题困扰,oracle连接超出最大连接数.原以为是tomcat程序还有没释放的连接,但是经过追踪审查之后发现不是程序的问题,而是数据库本身连接数异常多.下面是我操作过程. 重启oracle服务后,登陆sqlplus.SQL> select count(*) from v$session;SQL> show parameter processes;SQL> show parame

oracle11g-在虚拟机linux上oracle数据库不能连接

问题描述 在虚拟机linux上oracle数据库不能连接 可能是在虚拟机上删除了个表空间,造成数据库一直不能打开. linux上命令行显示这样: cannot identify/lock data file 6 - see DBWR trace file data file 6 : 'home/oracle/j04.dbs' 求大师解决下!谢谢.

求ASP.NET中实现ORACLE数据库自动恢复的代码

问题描述 求ASP.NET中实现ORACLE数据库自动恢复的代码,自动备份的好处理,可是还原的时候有表空间和用户等,请问哪位有解决办法? 解决方案 解决方案二:up