`

实例代码讲解Java连接Oracle数据库的各种方法

阅读更多
java和oracle的接口:
在数据库中运行JAVA能说是 ORACLE8i的最令人激动的新特性。在你创建的使用ORACLE8i 数据库的应用程式中,你能使用和JAVA有关的新特征,轻松的将程式发布到INTERNET或INTRANET上。

Methods for Using Java in ORACLE

大家都知道JAVA在跨平台研发和INTERNET研发中已比较流 行,ORACLE8i及以后的版本中都包含了对在数据库中运行JAVA的扩展支持,这里有两种方法能使用:

JDBC:和ODBC 类似, JDBC 提供了一个驱动接口使你能在JAVA程式中访问数据库。注:JDBC驱动内嵌在数据库中虚拟机中。

SQLJ: 是个JAVA预编译器,他能将内嵌的SQL语句转化为JAVA语句.SQLJ的使用和运行机理和其他ORACLE的和编译器(如 Pro*C,Pro*COBOL)类似。实际上,为了使我们形象的记住SQLJ提供的功能,我们也能直接将SQLJ改名为Pro*Java。

将JAVA集成到数据库中是双向的。也就是说你能在JAVA中调用SQL和PL/SQL,也能在SQL和PL/SQL中调用JAVA。JAVA程式能直 接通过JDBC驱动调用SQL和PL/SQL,反过来,你也能在SQL和PL/SQL中直接调用JAVA。在数据库中,JAVA命名空间直接映射到数据库 模式的命名空间中,这样能方便JAVA的存取和调用。数据库同时提供扩展的DDL语句,通过这些语句,你能象创建一个存储过程相同在数据中创建内嵌的 JAVA程式。

Features of ORACLE JDBC Drivers

在 ORACLE8i中有三种类型的JDBC驱动,他们都使用相同的 syntax, APIs, and Oracle extensions,以使JAVA代码在robust clients、Web-based Java applets, and Java stored procedures之间保持轻便灵活:三种类型如下:
1.JDBC OCI: 此驱动类似于传统的ODBC 驱动。因为他需要Oracle Call Interface and Net8,所以他需要在运行使用此驱动的JAVA程式的机器上安装客户端软件
2.JDBC Thin: 这种驱动一般用在运行在WEB浏览器中的JAVA程式。他不是通过OCI or Net8,而是通过Java sockets进行通信 ,因此不必在使用JDBC Thin的客户端机器上安装客户端软件。
3.JDBC KPRB: 这种驱动由直接存储在数据库中的JAVA程式使用,如Java Stored Procedures 、triggers、Database JSP’s。It uses the default/ current database session and thus requires no additional database username, password or URL.

怎么设置使JAVA能通过 Oracle JDBC Drivers连接到数据库:1.安装Sun JDK. 
2. 修改PATH环境变量,使其指向JDK的bin目录
3. 设置CLASSPATH环境变量,使其指向正确的JDK的lib及oracle的JDBC接口。
CLASSPATH = ".;????"
3. 运行"java ?version" ,验证java的版本。

怎么在不同的操作系统上根据 接口类型设置客户端:
对JDBC THIN接口:
在windows和unix下的设置方法相同:
1.根据jdk的版 本,只需要将classesxx.zip拷贝到指定的目录,不必安装Oracle Client。在装完数据库后,该文件会在$ORACLE_HOME/jdbc/lib目录下。2.设置CLASSPATH,使其包含上面的 classesxx.zip
3.根据需要,拷贝oracle的其他zip文件并设置CLASSPATH

对JDBC OCI接口:
Fow 视窗系统:
1.安装Oracle Client.
2.根据jdk的版本,设置 CLASSPATH,使其包含正确的classesxx.zip
3.根据需要设置CLASSPATH,使其指向Oracle的其他zip文件
4.设置PATH,使其包含$ORACLE_HOME\bin目录

For unix:
1.安装 Oracle Client.
2.根据jdk的版本,设置CLASSPATH,使其包含正确的classesxx.zip
3.根 据需要设置CLASSPATH,使其指向Oracle的其他zip文件
4.设置LD_LIBRARY_PATH,使其包 含$ORACLE_HOME/lib目录

备注:
classesxx.zip一般在 ORACLE_HOME\jdbc\lib目录下。

在ORACLE_HOME\jdbc\lib目录下的和Oracle JDBC Drives驱动有关的文件的解释:
- classes12.zip
Classes for use with JDK 1.2.x. It contains the JDBC driver
classes except classes necessary for NLS support in Object and
Collection types.

- nls_charset12.zip
NLS classes for use with JDK 1.2.x. It contains classes necessary
for NLS support in Object and Collection types.

- classes12_g.zip
Same as classes12.zip, except that classes were compiled with
"javac -g".

JDBC连接数据库的语法:
JDBC THIN:


Connection conn=
DriverManager.getConnection
("jdbc:oracle:thin:@dlsun511:1521:ora1","scott","tiger");
|    |   |
machine(ip@) : port# : sid 

JDBC OCI:

Connection conn=
DriverManager.getConnection
("jdbc:oracle:oci8[9]:@RAC","scott","tiger");
|
Net Service

JDBC THIN和JDBC THIN对比:
相同 之处:
The JDBC Thin, JDBC OCI, and JDBC Server drivers all provide the same functionality. They all support the following standards and features:
* JDBC 2.0
* Partial JDBC 3.0 (in JDBC driver version 9.2)
* the same syntax and APIs
* the same Oracle extensions
主要是JDBC OCI 接口比JDBC THIN接口效率高!

How does one connect with the JDBC Thin Driver?
The the JDBC thin driver provides the only way to access Oracle from the Web (applets). It is smaller and slower than the OCI drivers.
import java.sql.*;

class dbAccess {
public static void main (String args []) throws SQLException
{
DriverManager.registerDriver (
new oracle.jdbc.driver.OracleDriver()
);

Connection conn = DriverManager.getConnection
("jdbc:oracle:thin:@dbhost:1521:ORA1", "scott", "tiger");
// @machine:port:SID,  userid, password

Statement stmt = conn.createStatement();
ResultSet rset = stmt.executeQuery (
"select BANNER from SYS.V_$VERSION"
);
while (rset.next())
System.out.println (rset.getString(1));  // Print col 1
stmt.close();
}
}
How does one connect with the JDBC OCI Driver?
One must have Net8 (SQL*Net) installed and working before attempting to use one of the OCI drivers.


import java.sql.*;
class dbAccess {
public static void main (String args []) throws SQLException
{
try {
Class.forName ("oracle.jdbc.driver.OracleDriver");
} catch (ClassNotFoundException e) {
e.printStackTrace();
}

Connection conn = DriverManager.getConnection
("jdbc:oracle:oci8:@ORA1", "scott", "tiger");
// or oci9 @Service, userid, password
Statement stmt = conn.createStatement();
ResultSet rset = stmt.executeQuery (
"select BANNER from SYS.V_$VERSION"
);
while (rset.next())
System.out.println (rset.getString(1)); // Print col 1
stmt.close();
}
}
How does one connect with the JDBC KPRB Driver?
One can obtain a handle to the default or current connection (KPRB driver) by calling the OracleDriver.defaultConenction() method. Please note that you do not need to specify a database URL, username or password as you are already connected to a database session. Remember not to close the default connection. Closing the default connection might throw an exception in future releases of Oracle.
import java.sql.*;


class dbAccess {
public static void main (String args []) throws SQLException
{
Connection conn = (new
oracle.jdbc.driver.OracleDriver()).defaultConnection();

Statement stmt = conn.createStatement();
ResultSet rset = stmt.executeQuery (
"select BANNER from SYS.V_$VERSION"
);






  建立和分析java程序和oracle数据库交互的两种方法

第一种应该是比较古老的方法了。

Windows下采用JDBC-ODBC Bridge连接oracle数据库

1、 安装oracle客户端程序,在tnsnames.ora中配置好相应的数据库连接串文件,此处设连接串名为“dbora”。

2、 在windows的控制面板->“数据库源ODBC”中,建立相应的用户或者系统DSN,具体方法:在安装的数据源的驱动程序选择 “Microsoft ODBC for Oracle”。

点击“完成”,在弹出的对话框中,填入如下信息:

数据源名称:dbjdbc
描述:jdbc数据源
用户名称:manager -此为数据库用户名
服务器:dbora -此即为连接串名
其中“dbjdbc”是在java程序中要引用的名字,至此数据源dbjdbc已建立。

3、 建立如下的java程序

// 使用本地的jdbc连接串,查询oracle数据库表
import java.sql.*;

public class lookup {
public static void main(String[] args)
throws SQLException, ClassNotFoundException {
//定义了数据库连接串
String dbUrl = "jdbc:odbc:dbjdbc";
//数据库的用户名
String user = "manager";
//数据库的用户口令
String password = "ora912";
// 加载jdbc-odbc bridge驱动程序
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
// 与url指定的数据源建立连接
Connection c = DriverManager.getConnection(dbUrl, user, password);
//采用Statement进行查询
Statement s = c.createStatement();
ResultSet r = s.executeQuery("SELECT empno,name from emp");
while(r.next()) {
// 打印字段信息
System.out.println(r.getString("empno") + ",
" + r.getString("name ") );
}
// 关闭Statement,其上的ResultSet也将关闭
s.close();
}
}

在jdbc中查询的语句有3类:Statement、PreparedStatement、CallableStatement。

jdbc的thin方式

此种方法不需要安装Oracle的客户端,也不需要配置odbc,故此种方法用得比较普遍。

此方法在使用时需要将oracle的jar包加到classpath变量中,此包可以在oralce客户端程序 的$ORACLE_HOME/jdbc/lib/classes12.jar找到。

import java.sql.*;

public class jdbcthin {
//dbUrl数据库连接串信息,其中“1521”为端口,“ora9”为sid
String dbUrl = "jdbc:oracle:thin:@10.10.20.15:1521:ora9";
//theUser为数据库用户名
String theUser = "sman";
//thePw为数据库密码
String thePw = "sman";
//几个数据库变量
Connection c = null;
Statement conn;
ResultSet rs = null;

//初始化连接
public jdbcthin() {
try {
Class.forName("oracle.jdbc.driver.OracleDriver").newInstance();
//与url指定的数据源建立连接
c = DriverManager.getConnection(dbUrl, theUser, thePw);
//采用Statement进行查询
conn = c.createStatement();
} catch (Exception e) {
e.printStackTrace();
}
}

//执行查询
public ResultSet executeQuery(String sql) {
rs = null;
try {
rs = conn.executeQuery(sql);
} catch (SQLException e) {
e.printStackTrace();
}
return rs;
}

public void close() {
try {
conn.close();
c.close();
} catch (Exception e) {
e.printStackTrace();
}
}

public static void main(String[] args) {
ResultSet newrs;
jdbcthin newjdbc = new jdbcthin();
newrs = newjdbc.executeQuery("select * from eventtype");
try {
while (newrs.next()) {
System.out.print(newrs.getString("event_type"));
System.out.println(":"+newrs.getString("content"));
}
} catch (Exception e) {
e.printStackTrace();
}

newjdbc.close();
}
}
分享到:
评论

相关推荐

    几种最新数据库驱动jar包和java代码实现(mysql5.5,oracle11g,sqlserver2008)

    几种最新数据库驱动jar包和java代码实现(mysql5.5,oracle11g,sqlserver2008),java代码实现里面有这三种数据的代码,同时包含了一个oracle连接数据库实例,有很详细的讲解,希望大家喜欢

    实例讲解Java批量插入、更新数据

    片文章介绍了一个Java批量添加数据,多个字段同时添加多条数据具体实例,面向的是Oracle数据库,需要的朋友可以参考下

    Oracle SQL高级编程(资深Oracle专家力作,OakTable团队推荐)--随书源代码

    有近20年使用Oracle技术产品以及Oracle数据库管理员/Oracle数据库应用管理员的经验,是真正应用集群、性能调优以及数据库内部属性方面的专家。同时是一位演讲家及Oracle ACE。  JARED STILL 从1994年就开始使用...

    oracle实验报告

    1. 实例讲解Oracle数据库自带的几个触发器 Oracle数据库自带的几个触发器(最简单触发器格式)示例如下: -- create or replace trigger MDSYS.sdo_drop_user after drop on DATABASE declare stmt varchar2(200...

    李兴华 Java Web 开发实战经典_带源码_高清pdf 带书签 上

    3.4、开发实战讲解(基于Oracle数据库) 第4章 Tomcat服务器的安装及配置 4.1、Web容器简介 4.2、Tomcat简介 4.3、Tomcat服务器的下载及配置 4.3.1、Tomcat下载 4.3.2、Tomcat安装 4.3.3、服务器配置 4.4、...

    李兴华Java Web开发实战经典.pdf (高清版) Part1

    3.4、开发实战讲解(基于Oracle数据库) 第4章 Tomcat服务器的安装及配置 4.1、Web容器简介 4.2、Tomcat简介 4.3、Tomcat服务器的下载及配置 4.3.1、Tomcat下载 4.3.2、Tomcat安装 4.3.3、服务器配置 4.4、...

    MLDN+李兴华+Java+Web开发实战经典.part3.rar )

    3.4、开发实战讲解(基于Oracle数据库) 第4章 Tomcat服务器的安装及配置 4.1、Web容器简介 4.2、Tomcat简介 4.3、Tomcat服务器的下载及配置 4.3.1、Tomcat下载 4.3.2、Tomcat安装 4.3.3、服务器配置 4.4、...

    李兴华Java Web开发实战经典(高清版) Part2

    3.4、开发实战讲解(基于Oracle数据库) 第4章 Tomcat服务器的安装及配置 4.1、Web容器简介 4.2、Tomcat简介 4.3、Tomcat服务器的下载及配置 4.3.1、Tomcat下载 4.3.2、Tomcat安装 4.3.3、服务器配置 4.4、...

    java web 视频、电子书、源码(李兴华老师出版)

    3.4、开发实战讲解(基于Oracle数据库) 第4章 Tomcat服务器的安装及配置 4.1、Web容器简介 4.2、Tomcat简介 4.3、Tomcat服务器的下载及配置 4.3.1、Tomcat下载 4.3.2、Tomcat安装 4.3.3、服务器配置 4.4、...

    Java开发详解.zip

    031714_【第17章:Java数据库编程】_使用JDBC连接Oracle笔记.pdf 031801_【第18章:图形界面】_AWT、Swing简介笔记.pdf 031802_【第18章:图形界面】_基本容器:JFrame笔记.pdf 031803_【第18章:图形界面】_标签...

    李兴华 java_web开发实战经典 源码 完整版收集共享

    3.4、开发实战讲解(基于Oracle数据库) 第4章 Tomcat服务器的安装及配置 4.1、Web容器简介 4.2、Tomcat简介 4.3、Tomcat服务器的下载及配置 4.3.1、Tomcat下载 4.3.2、Tomcat安装 4.3.3、服务器配置 4.4、...

    李兴华 Java Web 开发实战经典 高清扫描版Part3

    3.4、开发实战讲解(基于Oracle数据库) 第4章 Tomcat服务器的安装及配置 4.1、Web容器简介 4.2、Tomcat简介 4.3、Tomcat服务器的下载及配置 4.3.1、Tomcat下载 4.3.2、Tomcat安装 4.3.3、服务器配置 4.4、...

    李兴华 Java Web 开发实战经典_带源码_高清pdf 带书签 下

    3.4、开发实战讲解(基于Oracle数据库) 第4章 Tomcat服务器的安装及配置 4.1、Web容器简介 4.2、Tomcat简介 4.3、Tomcat服务器的下载及配置 4.3.1、Tomcat下载 4.3.2、Tomcat安装 4.3.3、服务器配置 4.4、...

    oracle使用管理笔记(一些经验的总结)

    5.oracle数据库启动流程 9 6.oracle登录认证方式 10 7.oracle丢失管理员密码怎么办 11 8.oracle表管理 12 9.oracle基本查询 14 oracle基本所有查询案例 16 10.oracle分页查询 21 (1)删除重复记录 22 11.oracle合并...

    《JAVA办公自动化项目方案精解》光盘

    本书共分八章,通过详细的实例讲解如何使用Java语言,实现办公自动化的软件管理。. 本书可作为高校计算机软件专业的学生学习使用Java语言,也可作为系统开发人员和工程技术人员的参考书。本书易学易用,每个例子的...

    JSP Oracle组建动态网站实例精讲.part1

    本书的一大特色是在对各种热门的网络信息服务系统的架设进行讲解时,对各类望站的目标设计、系统开发背景、开发和运行环境选择、系统功能分析、系统功能模块设计、数据库需求分析、数据库概念结构设计、数据库逻辑...

    JSP Oracle组建动态网站实例精讲.part2

    本书的一大特色是在对各种热门的网络信息服务系统的架设进行讲解时,对各类望站的目标设计、系统开发背景、开发和运行环境选择、系统功能分析、系统功能模块设计、数据库需求分析、数据库概念结构设计、数据库逻辑...

    JSP Oracle组建动态网站实例精讲.part3

    本书的一大特色是在对各种热门的网络信息服务系统的架设进行讲解时,对各类望站的目标设计、系统开发背景、开发和运行环境选择、系统功能分析、系统功能模块设计、数据库需求分析、数据库概念结构设计、数据库逻辑...

Global site tag (gtag.js) - Google Analytics