这篇文章是在网上摘的、以前面试的时候问过我这样的问题“说说为什么通过thin方式连接数据库”,今天搜索的时候偶然间发现了、就摘下来了、以后好看看
在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数据库服务名;
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.*;
/**
* 通过连接池方式获得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获得数据库的连接,而具体连接的是哪一台机器上的数据库与应用无关
分享到:
相关推荐
本篇文章将详细介绍如何在Delphi中通过OCI连接到Oracle数据库,以及这种连接方式的优势。 首先,OCI是Oracle提供的C语言接口,它允许开发者直接调用Oracle服务器的内部函数,实现对数据库的高效访问。Delphi虽然...
Oracle数据库是企业级广泛应用的关系型数据库系统,连接Oracle数据库的方式有多种,主要涵盖JDBC的三种方式:OCI方式、thin方式以及JdbcOdbc桥接方式。这些方式各有特点,适用于不同的场景。 1. OCI(Oracle Call ...
通过这种方式,Navicat便能利用oci文件提供的接口与Oracle 12c数据库建立连接,进而进行数据的查询、编辑、导入导出等一系列操作。在日常工作中,了解如何配置和使用Navicat对于数据库管理员和开发人员来说是非常...
总的来说,oci.zip文件是Oracle 11g数据库连接的关键组件,对于开发和管理Oracle数据库的应用程序来说是必不可少的。正确配置和使用这些文件,可以实现高效、稳定的数据库访问,同时,理解数据库权限管理和用户切换...
Oracle数据库连接模块的核心在于如何建立和管理与Oracle服务器的通信。在这个模块中,通常会用到Oracle的数据访问接口,如OCI(Oracle Call Interface)或者ODBC(Open Database Connectivity)。在给定的标题中提到...
在本场景中,“OracleOCI连接数据库使用”指的是使用OCI库来建立和管理与Oracle数据库的连接。 Navicat Premium是一款多数据库管理工具,支持包括Oracle在内的多种数据库系统。在描述中提到“用于Navicat Premium...
Oracle OCI(Oracle Call Interface)是Oracle数据库提供的一种C语言接口,允许开发者在各种应用程序中直接与Oracle数据库交互。在VC++环境下,通过OCI接口可以实现高效、低级别的数据库操作,包括连接、查询、插入...
OCI(Oracle Call Interface)是 Oracle 公司提供的由头文件和库函数等组成的一个访问 Oracle 数据库的应用程序编程接口(API)。它允许开发人员在第三代编程语言(包括 C、C++、COBOL 与 FORTRAN)中通过 SQL...
Oracle8i提供了三种类型的JDBC驱动:JDBC OCI、JDBC Thin和JDBC KPRB。JDBC OCI类似于传统的ODBC驱动,需要客户端软件支持;JDBC Thin通过Java套接字直接与数据库通信,不需要额外的客户端软件;JDBC KPRB主要用于...
Oracle客户端包含了连接Oracle服务器所需的所有组件,包括网络配置、数据库驱动(如oci.dll)、SQL*Plus工具等。安装客户端后,系统会自动配置好相应的环境变量,使得程序可以通过Oracle Net Services(也称为TNS)...
### Oracle OCI 数据库连接实例详解 #### 一、概述 Oracle Call Interface (OCI) 是 Oracle 数据库提供的 C 语言 API,用于开发高性能的应用程序。它提供了丰富的功能集,包括数据类型处理、错误处理机制以及安全...
总结起来,通过Navicat和Oracle 11的OCI文件,用户可以在不完全安装Oracle客户端的情况下,以轻量级的方式连接并管理Oracle数据库。这个过程涉及到Oracle Instant Client的安装、环境变量的配置以及Navicat的连接...
oci.dll作为这些API的实现载体,是连接应用和数据库的关键。 2. 性能提升:从Oracle 10G到11G,OCI的性能得到了显著提升。例如,11G引入了并行执行的概念,使得复杂查询和数据处理任务能够更快完成。同时,优化的...
1. **建立连接**:在oci编程中,首先要通过用户名、密码和数据库服务名创建数据库连接。对于达梦数据库,这通常涉及到初始化环境、分配会话、设置登录信息等一系列操作。 2. **准备SQL语句**:oci允许动态或静态地...
作为对 Oracle 数据库的原生接口,OCI 还对 Oracle 数据库核心内部发出的查询、语句和调用进行了增强。各种 Oracle 工具(如 SQL*Plus、Real Application Testing (RAT)、SQL*Loader 和 Data-Pump)也都是基于 OCI。...
Oracle数据库接口OCI(Oracle Call Interface)是Oracle公司提供的一个C编程接口,允许开发者直接与Oracle数据库进行交互。oci的封装ocilib则是为了简化这个过程,为C++开发者提供了一个更友好的API,使得在C++中...
标题中的“navicat连接oracle 万能oci”指的是使用Navicat这款数据库管理工具来连接Oracle数据库,其中“万能oci”可能是指一个通用的Oracle Call Interface (OCI) 文件,这种文件允许Navicat与不同版本的Oracle...
Oracle 数据库连接技术概述 Oracle 数据库连接是软件开发中的一种重要技术,涉及到数据库连接、数据传输、软件层次结构等多方面的知识。...了解 Oracle 数据库连接技术对于软件开发和数据库管理都是非常重要的。
总之,使用C++和OCI连接Oracle数据库涉及多个步骤,包括环境配置、连接初始化、SQL执行、结果处理和资源释放。通过封装好的C++类,可以极大地提高开发效率,减少出错的可能性。理解这些基本概念和操作流程是成功实现...