网络编程 | 站长之家 | 网页制作 | 图形图象 | 操作系统 | 冲浪宝典 | 软件教学 | 网络办公 | 邮件系统 | 网络安全 | 认证考试 | 系统进程
Firefox | IE | Maxthon | 迅雷 | 电驴 | BitComet | FlashGet | QQ | QQ空间 | Vista | 输入法 | Ghost | Word | Excel | wps | Powerpoint
asp | .net | php | jsp | Sql | c# | Ajax | xml | Dreamweaver | FrontPages | Javascript | css | photoshop | fireworks | Flash | Cad | Discuz!
当前位置 > 网站建设学院 > 网络编程 > 数据库 > Oracle教程
Tag:注入,存储过程,分页,安全,优化,xmlhttp,fso,jmail,application,session,防盗链,stream,无组件,组件,md5,乱码,缓存,加密,验证码,算法,cookies,ubb,正则表达式,水印,索引,日志,压缩,base64,url重写,上传,控件,Web.config,JDBC,函数,内存,PDF,迁移,结构,破解,编译,配置,进程,分词,IIS,Apache,Tomcat,phpmyadmin,Gzip,触发器,socket
数据库:数据库教程,数据库技巧,Oracle教程,MySQL教程,Sybase教程,Access教程,DB2教程,数据库安全,数据库文摘
本月文章推荐
.回滚段表空间数据文件丢失或损坏.
.如何自动获取Oracle数据库启动时.
.oracle statspack实例(一).
.常用sql script.
.Oracle的共享内存段.
.用简单的方法获取Oracle语句的执.
.MdkLinux 初体验.
.在linux8.0下,oracle9i的配置说.
.ORACLE常用傻瓜問題1000問(之十二.
.执行全文索引时出现权限不足的解.
.用SQL删除数据.
.查看数据库的常用SQL.
.自己动手写操作系统(二).
.ORACLE SQL性能优化系列 (十).
.Oracle10g ASM数据库中表空间的维.
.Oracle与DATA GUARD环境中重建控.
.postfix技巧.
.我的oracle笔记七(其他).
.创建表时考虑列的顺序.
.Application Server产品简介.

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

发表日期:2008-2-9



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

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

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

J2EE应用中与Oracle数据库的连接(图一)


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

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

J2EE应用中与Oracle数据库的连接(图二)

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

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

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

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

J2EE应用中与Oracle数据库的连接(图三)

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

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

J2EE应用中与Oracle数据库的连接(图四)


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

J2EE应用中与Oracle数据库的连接(图五)

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

J2EE应用中与Oracle数据库的连接(图六)

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

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

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

J2EE应用中与Oracle数据库的连接(图七)

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

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

J2EE应用中与Oracle数据库的连接(图八)

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


  3、通过连接池获得连接

  以上在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;
 }
}

  4、使用连接池的优点

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

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

  便于应用的移植和后端数据库的切换,因为在应用中通过统一的JNDI获得数据库的连接,而具体连接的是哪一台机器上的数据库与应用无关。
上一篇:Oracle分页新招 人气:1259
下一篇:JDBC+Hibernate将Blob数据写入Oracle 人气:985
浏览全部Oracle教程的内容 Dreamweaver插件下载 网页广告代码 祝你圣诞节快乐 2009年新年快乐