点击这里给我发消息 点击这里给我发消息

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

添加时间:2013-12-7
    相关阅读: 开发 技术 数据库 程序 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的用户名和口令。
  
  二、通过连接池获得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.*;
  <
咨询热线:020-85648757 85648755 85648616 0755-27912581 客服:020-85648756 0755-27912581 业务传真:020-32579052
广州市网景网络科技有限公司 Copyright◎2003-2008 Veelink.com. All Rights Reserved.
广州商务地址:广东省广州市黄埔大道中203号(海景园区)海景花园C栋501室
= 深圳商务地址:深圳市宝源路华丰宝源大厦606
研发中心:广东广州市天河软件园海景园区 粤ICP备05103322号 工商注册