1818IP-服务器技术教程,云服务器评测推荐,服务器系统排错处理,环境搭建,攻击防护等

当前位置:首页 - 数据库 - 正文

君子好学,自强不息!

以下的文章主要介绍的是Oracle 数据库里三种不同类型的JDBC驱动,我们大家都知道Oracle 中的jdbc驱动主要有以下的三类,即,1、JDBC OCI: oci是Oracle call interface的缩写,此驱动类似于传统的ODBC 驱动。

因为它需要Oracle Call Interface and Net8,所以它需要在运行使用此驱动的JAVA程序的机器上安装客户端软件,其实主要是用到orcale客户端里以dll方式提供的oci和服务器配置。

2、JDBC Thin: thin是for thin client的意思,这种驱动一般用在运行在WEB浏览器中的JAVA程序。它不是通过OCI or Net8,而是通过Java sockets进行通信,是纯java实现的驱动,因此不需要在使用JDBC Thin的客户端机器上安装orcale客户端软件,所以有很好的移植性,通常用在web开发中。

3、JDBC KPRB: 这种驱动由直接存储在数据库中的JAVA程序使用,如Java Stored Procedures 、triggers、Database JSP’s。因为是在服务器内部使用,他使用默认或当前的会话连接来访数据库,不需要用户名密码等,也不需要数据库url。

在应用开发的时候,通常是用前面两种方式,下面是数据库url的写法:

jdbc:Oracle :thin:@serverip:service 
jdbc:Oracle :oci:@service 

看来oci的还更加简洁,ip可以省掉不写了,这是因为oci驱动通过客户端的native java methods来条用c library方式来访问数据库服务器,使用到了客户端的net manager里的数据库服务配置。

因为oci方式最终与数据库服务器通信交互是用的c library库,理论上性能优于thin方式,据说主要是体现在blob字段的存取上。

开发Oracle 数据库经常用到的 pl sql dev使用的估计是oci方式,需要安装客户端,但也可以不安装,但是要抽出其中的oci相关的dll即jar包、注册环境变量、配置侦听文件等。Oracle 在10g之后提供了精简客户端,安装的过程应该包括上面的那些工作。

HowdoesoneconnectwiththeJDBCOCIDriver? 
OnemusthaveNet8(SQL*Net)installedandworkingbeforeattemptingtouseoneoftheOCIdrivers. 
Code:[Copytoclipboard] 
importjava.sql.*; 
classdbAccess{ 
publicstaticvoidmain(Stringargs[])throwsSQLException 
{ 
try{ 
Class.forName("Oracle.jdbc.driver.OracleDriver"); 
}catch(ClassNotFoundExceptione){ 
e.printStackTrace(); 
} 
Connectionconn=DriverManager.getConnection 
("jdbc:Oracle:oci8:@ORA1","scott","tiger"); 
//oroci9@Service,userid,password 
Statementstmt=conn.createStatement(); 
ResultSetrset=stmt.executeQuery( 
"selectBANNERfromSYS.V_$VERSION" 
); 
while(rset.next()) 
System.out.println(rset.getString(1));//Printcol1 
stmt.close(); 
} 
} 
HowdoesoneconnectwiththeJDBCKPRBDriver? 
Onecanobtainahandletothedefaultorcurrentconnection
(KPRBdriver)bycallingtheOracleDriver.defaultConenction()method.
PleasenotethatyoudonotneedtospecifyadatabaseURL,
usernameorpasswordasyouarealreadyconnectedtoadatabasesession.
Remembernottoclosethedefaultconnection.
ClosingthedefaultconnectionmightthrowanexceptioninfuturereleasesofOracle. 
importjava.sql.*; 
Code:[Copytoclipboard] 
classdbAccess{ 
publicstaticvoidmain(Stringargs[])throwsSQLException 
{ 
Connectionconn=(new 
Oracle.jdbc.driver.OracleDriver()).defaultConnection(); 
Statementstmt=conn.createStatement(); 
ResultSetrset=stmt.executeQuery( 
"selectBANNERfromSYS.V_$VERSION" 
); 
while(rset.next()) 
System.out.println(rset.getString(1));//Printcol1 
stmt.close(); 
} 
} 

本文来源:1818IP

本文地址:https://www.1818ip.com/post/11295.html

免责声明:本文由用户上传,如有侵权请联系删除!

发表评论

必填

选填

选填

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。