java访问Oracle数据库

来源:互联网 发布:手机摄像头测试软件 编辑:程序博客网 时间:2024/05/01 03:47

java访问Oracle数据库(转)(2005-11-4 14:57:00)

【收藏】 【评论】 【打印】 【关闭】

 

J2EE应用中与Oracle数据库的连接
作者:洪建
  在J2EE应用程序开发中,应用程序与数据库连接的建立是我们经常遇到的问题之一。在这里我主要谈谈在本地应用程序中通过OCI方式、thin方式和JdbcOdbc桥方式连接Oracle数据库,在iPlanet Application Server 6.5和Sun ONEApplication 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的用户名和口令。
原创粉丝点击