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

转载 2015年11月18日 19:55:34

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

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

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"为数据库服务名。

Thin方式

先到Oracle技术网下载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”中具体参数的设置即可。

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 ONE Application Server 7中Oracle数据库连接池的配置,以及在应用中如何通过连接池获得数据库的连接。

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中的数据库连接池配置完毕,重起服务使之生效。
  

Sun ONE Application Server 7连接池的配置

在配置之前将classes12.zip文件置于…/server1/lib目录下。通过浏览器的4848端口打开Sun ONE 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 ONE Application Server7中的数据库连接池配置完毕,重起服务使之生效。

通过连接池获得连接

   以上在iPlanet Application Server 6.5和Sun ONE 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;
 }
}

使用连接池的优点

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

  对数据库的连接统一进行配置、治理、监控,以及对数据库连接池的参数进行优化调整,同时对应用中没有关闭或其他原因造成没有关闭的数据库连接由连接池统一进行治理。

  便于应用的移植和后端数据库的切换,因为在应用中通过统一的JNDI获得数据库的连接,而具体连接的是哪一台机器上的数据库与应用无关。

J2EE——JDBC连接数据库实例

上篇博客初步介绍了JDBC,并简单提到了连接数据库的4种不同驱动方式: (1)JDBC-ODBC桥驱动 (2)纯Java驱动 (3)本地API部分Java驱动 (4)JDBC网络纯Java驱动 本篇博...
  • hanxuemin12345
  • hanxuemin12345
  • 2013年12月28日 15:27
  • 5334

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

J2EE应用中与Oracle数据库的连接 在J2EE应用程序开发中,应用程序与数据库连接的建立是我们经常遇到的问题之一。在这里我主要谈谈在本地应用程序中通过OCI方式、thin方式和JdbcOd...
  • damys
  • damys
  • 2013年01月06日 16:02
  • 470

j2EE连接数据库的增删改查操作

String sql ="select * from users where name=? and password=?"; PreparedStatement pstmt = null; ...
  • coding_man_xie
  • coding_man_xie
  • 2016年03月15日 21:50
  • 2240

java j2ee多数据源配置

这里主要介绍两种多数据源方式,一种是SpringMVC+MYbatis注解的方式,一种spring JNDI方式; 总体大概流程: 1. 拷贝所需jar 2.写一个数据库切换的工具类:DataSou...
  • q_zx1bydcom
  • q_zx1bydcom
  • 2016年09月12日 09:41
  • 348

Oracle如何连接远程数据库

Oracle如何连接远程数据库   配置好相关的文件就可以,一般是tnsname.ora文件。 一般oracle10g的文件所在目录为:C:\oracle\product\10.2.0\db_1...
  • GaraMaps
  • GaraMaps
  • 2016年09月13日 21:57
  • 17492

SpringMVC(四) 连接oracle数据库操作

首先看一下项目结构 实体类 package com.dragon.entity;public class UserInfo { private int user_id; private String...
  • u010416069
  • u010416069
  • 2013年07月25日 14:48
  • 3959

Oracle 让别人连接到自己的数据库

第一步:进入Oralce Net Manager 第二部:      1: 2.1: 第三步: 3.1: 3.2: 第四步: 4.1: 4.2: 4.3: ...
  • u013170178
  • u013170178
  • 2016年12月12日 11:15
  • 2601

访问Oracle数据库的四款工具软件介绍

本文由Markdwon语法编辑器编辑完成。1. Oracle数据库介绍:关于Oracle数据库,以及它和MySQL, SQL Server等其他数据库的介绍和区别,可以查看以下来自知乎的链接。 ht...
  • inter_peng
  • inter_peng
  • 2017年07月10日 19:53
  • 1488

Java连接Oracle数据库的三种连接方式

背景:这两天在学习Oracle数据库,这里就总结下自己上课所学的知识,同时记录下来,方便整理当天所学下的知识,也同时方便日后自己查询。SQL语句的话,这里我就不多讲了,感觉和其他的数据库(MySQL、...
  • tzs_1041218129
  • tzs_1041218129
  • 2016年12月27日 21:01
  • 13789

Oracle数据库连接超时解决方案

PL/Sql 连接数据库 超时问题解决--转(2012-08-01 10:14:27)转载▼标签: oraclepl/sql 分类: 数据库SQL  前提配置:本机是ORACLE服务端 用PLSQ...
  • houzuoxin
  • houzuoxin
  • 2013年03月26日 16:17
  • 6365
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:J2EE应用中与Oracle数据库的连接
举报原因:
原因补充:

(最多只允许输入30个字)