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

javaweb(jsp)项目如何连接oracle数据库???(自整理) 配置如下:jdbc:oracle:thin:@(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=localhost)(PORT=1521)))(CONNECT_DATA=(SERVICE_NAME=or12c2)))标准:jdbc:oracle:thin:@//:/标准:jdbc:oracle:thin:@::--查ServiceName。 阅读详情

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

作者:洪建

  在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。

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

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、使用连接池的优点

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

  1. 对数据库的连接统一进行配置、管理、监控,以及对数据库连接池的参数进行优化调整,同时对应用中没有关闭或其他原因造成没有关闭的数据库连接由连接池统一进行管理。
  2. 便于应用的移植和后端数据库的切换,因为在应用中通过统一的JNDI获得数据库的连接,而具体连接的是哪一台机器上的数据库与应用无关。 
jsp+oracle 使用JSP访问Oracle数据库,使用JDBC访问数据库,JDBC-ODBC桥作为JDBC API访问具体数据库的中间环节,是使用JSP访问数据库常用的一个办法。访问Oracle 10g的实例来讲解如何在JSP中使用JDBC-ODBC桥结合ODBC驱动程序的机制来访问数据库。 立即下载

相关推荐

jsp连接oracle数据库代码

本文介绍了JSP连接oracle的方法。

JavaWeb(三):一个简单的Jsp+Java+MySQL/Oracle程序

JavaWeb(三):一个简单的Jsp+Java+MySQL/Oracle程序

fen_fen的专栏 905

使用jsp实现登录页面,增删改查页面,oracle数据库。

用于练习jsp 和 JDBC 数据库增删改查sql命令 分页查询等功能

jsp连接Oracle

使用eclipse编写jsp连接oracle数据库,并进行网页展示数据库中的表

qq_51363161的博客 1211

jsp+oracle数据库开发与实例

《 jsp+oracle数据库开发与实例》一书所附所有资源。包含源代码、演示等。

MQTT(一)C#使用 MQTTnet 快速实现 MQTT 通信(文末有完整Demo下载)

目录 MQTT(一)C#使用 MQTTnet 快速实现 MQTT 通信(文末有完整Demo下载) MQTT(二)在windows64位上安装Python环境 MQTT(三)Python客户端+net客户端+net服务端 简单通信 MQTT(四)树莓派开机自动运行Python客户端 MQTT(五)EMQ开源MQTT消息服务器 1 什么是 MQTT ? MQTT(Message Que...

pw的博客 10万+

JSP+ORACLE实现登录功能

一,连接ORACLE数据库 1.创建数据库登录表 字段账号和密码即可先添加一条数据方便测试功能 2.导入oracle jar包到项目lib文件夹里面 package com.zking.util; /** * 数据库连接 * */ import java.net.ConnectException; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; im..

m0_63300795的博客 478

走马观碑组智能车竞赛:目标板识别算法优化与实战技巧(基于OpenCV)

本文针对智能车竞赛走马观碑组别的核心挑战,深入探讨了基于OpenCV的目标板识别算法优化与实战技巧。文章系统分析了PVC赛道环境下的光照、运动模糊等干扰因素,详细拆解了从红色矩形定位、透视校正到特征提取与分类的完整流程,并提供了工程优化、速度提升及现场调试的实用策略,旨在帮助参赛队伍构建一套在高速运动中既准又快的鲁棒识别系统。

life6的博客 733

J2EE应用中与Oracle数据库的连接[转贴]

J2EE应用中与Oracle数据库的连接作者:洪建在J2EE应用程序开发中,应用程序与数据库连接的建立是我们经常遇到的问题之一。在这里我主要谈谈在本地应用程序中通过OCI方式、thin方式和JdbcOdbc桥方式连接Oracle数据库,在iPlanet Application Server 6.5和Sun Java System Application Server 7中对Oracle数据

安顿咖啡 andunkafei 1603

电压电流双闭环PFC单相PWM整流

电压电流双闭环PFC单相整流。仿真及代码

xht2403267701的博客 6052

欧姆龙PLC的FinsTCP协议

三个流行的PLC: PLC 通讯协议 默认IP和端口 区别 西门子S7-1200 S7 192.168.1.201 :102 2次验证(正常连接后,第一次发不断开,第二次发断开) 三菱Q系列 MC 192.168.1.250 :4096 不验证(正常连接后,怎么发都不断开) 欧姆龙CJ-2M系列 FinsTCP 192.168.1.14 :9600 1次验证(正常连接后,第一次发断开) ...

周林的博客 1万+

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

J2EE应用中与Oracle数据库的连接作者:洪建在J2EE应用程序开发中,应用程序与数据库连接的建立是我们经常遇到的问题之一。在这里我主要谈谈在本地应用程序中通过OCI方式、thin方式和JdbcOdbc桥方式连接Oracle数据库,在iPlanet Application Server 6.5和Sun ONE Application Server 7中对Oracle数据库连接池的配置以及应用中...

weixin_39789646的博客 218

【优化求解】基于matlab粒子群算法PSO确定最佳开关角对称级联多层逆变器【含Matlab源码 13080期】

粒子群算法PSO确定最佳开关角对称级联多层逆变器 完整代码,包运行;可提供运行操作视频!适合小白!

订阅付费专栏Matlab(奶茶价版),可赠送奶茶价版付费专栏指定代码1份; 97

oracle 下载j2ee api,J2EE应用中与Oracle数据库的连接

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

weixin_39750195的博客 106

《网络摄像机实战⑦:嵌入式端AWS KVS IoT SDK 库编译与测试全流程-君正/瑞芯微/全志(超详细指南)》

本文介绍了AWS音视频和物联网解决方案的核心组件与集成方法。主要内容包括:1)Amazon Kinesis Video Streams(KVS)提供的WebRTC托管服务,支持实时音视频流传输与双向交互;2)AWS IoT云服务实现设备连接与集成;3)详细说明了KVS WebRTC库的编译过程,包括源代码下载、CMake配置和依赖库生成;4)KVS Producer库的集成方法,重点阐述了存储空间调整和mbedtls版本适配等关键修改点。文章为开发者提供了AWS音视频和物联网服务的技术实现指南,特别针对嵌入

lvj_158的专栏 109

解决Jupyter Notebook中Plotly图表显示问题

摘要:在Jupyter Notebook中使用Plotly绘图时遇到图表无法显示的问题。通过分析发现Python 3.12版本与Jupyter存在兼容性问题。解决方案是将Python降级到3.11版本,重新创建虚拟环境后图表正常显示。这表明版本兼容性对数据可视化工具至关重要,环境配置检查是解决问题的关键步骤。该案例为遇到类似问题的开发者提供了参考方案。

m0_74337424的博客 125

oracle卖掉j2ee,J2EE应用中与Oracle数据库的连接

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

weixin_39990250的博客 116

matlab 质心重合法实现点云配准【2026最新版】

质心重合法是将源点云和目标点云的质心重合,以此缩小两点云集之间的平移误差,从而为下一步粗配准提供更好的初始位置姿态。

点云侠的博客 510
上一篇: java的OutOfMemory&内存泄漏问题
下一篇: 什么是WAR,EAR?
sscel
博客等级 码龄25年 6粉丝 11原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值