Java连接oracle数据库的两种常用方法
1、 使用thin连接
由于thin驱动都是纯Java代码,并且使用TCP/IP技术通过java的Socket连接上Oracle数据库,所以thin驱动是与平台无关的,你无需安装Oracle客户端,只需要下载一个thin驱动的jar包,并且将环境变量中的CLASS_PATH变量中加入thin驱动的路径就可以了。Thin驱动虽然与平台无关,也无需安装Oracle客户端,但是有一个致命的缺陷就是性能一般,达不到如OCI方式的企业级的要求。另外,如果一个oracle数据库对应一台主机,可以使用thin连接;如果一个oracle数据库对应四五台主机(集群服务器),使用thin时,需要把tnsnames.ora文件中的相关数据库的整个连接字符串都拷贝下来,如此才能连接上oracle集群数据库。而这种方法也是和数位同事讨论并Google了大量资料后才发现的。之前我一直以为thin不支持集群数据库的方式。
然后就是设置连接字符串了。这个是固定的写法,如下所示:
Class.forName("oracle.jdbc.driver.OracleDriver");
Connection conn =DriverManager.getConnection ("jdbc:oracle:thin:@10.87.134.107:1521:ora9","sms" , "zzsms");
在上面的连接字符串中,如果不是集群数据库就在@后直接输入数据库IP地址即可;如果是集群数据库,则需要在@后输入tnsnames.ora文件中有关该数据库的所有描述内容(通常是=后边的所有的内容)。
2、 使用oci连接(Oracle Call Interface)
使用OCI连接数据库是企业级的做法,适应于单个数据库和集群数据库,性能优越,尤其是连接池功能大大提高了应用程序的性能和并发量。唯一的缺点是,若想使用OCI必须要安装Oracle客户端。
安装完Oracle客户端后,里面有个jdbc的文件夹,该文件夹下就包含了OCI驱动和THIN驱动。所以是不需要去网上下载的。这个驱动在jdbc/lib文件夹下,主要有classes12.jar、nls_charset12.jar等等。其中以12结尾的驱动包适应于jdk1.1以上的版本。以11结尾的适应于jdk1.1以下的版本。文件名中含有classes的jar包就是驱动程序,文件名中含有nls的jar包是与国际化有关的类。
找到文件后,就需要把class和nls的jar包的绝对路径加入CLASS_PATH环境变量,否则会报ClassNotFound的异常。
设置环境变量后,就可以直接使用OCI驱动了,不要被“驱动”两个字吓坏了,(驱动就是一个可执行文件和一个连接字符串)。很简单,无非是连接字符串的问题。标准的连接字符串如下所示:
Class.forName("oracle.jdbc.driver.OracleDriver");
Connection con = DriverManager.getConnection("jdbc:oracle:oci:@xxzc","duansiyuan", "oracle_password");
只要这两行,就可以保证连接到数据库,而这个数据库不管是单个数据库还是集群数据库。其中xxzc就是数据库名,duansiyuan就是用户名,oralce_password就是密码。这种方式和C#中的方式比较类似。
需要注意的问题:
1、oracle_home/jdbc文件夹下有大量的样板代码和帮助文档,里面对如何安装和使用jdbc都有详细的说明,请引起高度重视并耐心阅读。里面有很多知识仅通过自己反复的实践是无法获取的。
2、如果想要高性能,请使用OCI连接,如果不想装Oracle客户端,请使用thin连接。
Java连接oracle数据库的两种常用方法的更多相关文章
- Java连接Oracle数据库的三种连接方式
背景: 这两天在学习Oracle数据库,这里就总结下自己上课所学的知识,同时记录下来,方便整理当天所学下的知识,也同时方便日后自己查询. SQL语句的话,这里我就不多讲了,感觉和其他的数据库(MySQ ...
- java连接Access数据库的两种方法
where ziduan in(select ziduan from table) 嵌套 ResultSet rs = pst.executeQuery();List list = new Ar ...
- .Net 中读写Oracle数据库常用两种方式
.net中连接Oracle 的两种方式:OracleClient,OleDb转载 2015年04月24日 00:00:24 10820.Net 中读写Oracle数据库常用两种方式:OracleCli ...
- C++连接mysql数据库的两种方法
本文主要介绍了C++连接mysql数据库的两种方法,希望通过本文,能对你有所帮助,一起来看. 现在正做一个接口,通过不同的连接字符串操作不同的数据库.要用到mysql数据库,以前没用过这个数据库,用a ...
- oracle入门(5)——java连接oracle数据库
[本文介绍] 前面几篇说了那么多,最终还没讲到如何用java连接数据库,本文实用一点,讲讲如何连接数据库. [java连接oracle数据库] 1.导入jdbc驱动:看到这里,就忙着上网找驱动?不,安 ...
- plsql 连接oracle数据库的2种方式
plsql 连接oracle数据库的2种方式 CreationTime--2018年8月10日09点50分 Author:Marydon 方式一:配置tnsnames.ora 该文件在instan ...
- python学习--python 连接SQLServer数据库(两种方法)
1. python 学习.安装教程参照: http://www.runoob.com/python/python-tutorial.html 2. 集成开发环境 JetBrains PyCharm C ...
- Java连接Oracle数据库常用方法
JDBC的六大步骤: 注册驱动 获取连接 获取执行sql语句对象 执行sql语句 处理结果集 关闭资源 oracle URL: jdbc:oracle:thin:@localhost:1521:SID ...
- java连接Oracle数据库的操作说明
在测试中,我们常常需要连接Oracle数据库来进行查询对比.下面,我们就来看看,如何使用java代码来连接数据库,并且取出我们想要的数值. 首先,java中如果要连接Oracle数据库,需要jdbc的 ...
随机推荐
- jar文件放在桌面上双击启动不了,但放在其它任何文件夹里都可以双击启动
今天本来是想尝试一下Java Network Launching Protocol (JNLP,java网络加载协议) 的,写了一个简单的窗口程序,打包成jar保存到桌面上,双击等了半天没显示出来. ...
- 关于打包测试环境,百度地图报 Bmap not undefined
https的网站使用百度地图,如果你引用的地址没写对的话,加载不出来百度地图,被认为是不安全的JS内容. https://api.map.baidu.com/api?+你的秘钥+&s=1 应该 ...
- #ifndef HeaderName_h #define HeaderName_h #endif 使用详解
想必很多人都看到过头文件中写有:#ifndef HeaderName_h #define HeaderNa ...
- 串口、COM口、TTL、RS-232、RS-485区别详解
1.串口.COM口是指的物理接口形式(硬件).而TTL.RS-232.RS-485是指的电平标准(电信号). 2.接设备的时候,一般只接GND RX TX.不会接Vcc或者+3.3v的电源线,避 ...
- SQL Server 2008以上误操作数据库恢复方法——日志尾部备份
原文出处:http://blog.csdn.net/dba_huangzj/article/details/8491327 问题: 经常看到有人误删数据,或者误操作,特别是update和delete的 ...
- uboot移植
Uboot移植 1.架构 board:与一些开发板相关的配置文件 common:uboot下使用能够使用的命令 CPU:与特定CPU架构相关的目录 disk:对磁盘的支持 doc:文档目录 drive ...
- Scala进阶之路-idea下进行spark编程
Scala进阶之路-idea下进行spark编程 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 1>.创建新模块并添加maven依赖 <?xml version=&qu ...
- oracle全文检索【转】【补】
全文检索 oracle对使用几十万以上的数据进行like模糊查询速度极差,包括 like 'AAA%' ,like '%AAA',like '%AAA%',like '%A%A%'的那些模糊查询.网上 ...
- TCP粘包,拆包及解决方法
在进行Java NIO学习时,发现,如果客户端连续不断的向服务端发送数据包时,服务端接收的数据会出现两个数据包粘在一起的情况,这就是TCP协议中经常会遇到的粘包以及拆包的问题.我们都知道TCP属于传输 ...
- Java编程思想 学习笔记10
十.内部类 可以将一个类的定义放在另一个类的定义内部,这就是内部类. 内部类是一种非常有用的特性,因为它允许你把一些逻辑相关的类组织在一起,并控制位于内部的类的可视性.然而必须要了解,内部类和组合是 ...