`

java连接oracle数据库的各种方法及java在数据库中的含义

阅读更多
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 Windows:
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:
  1. Connection conn=
  2. DriverManager.getConnection
  3. ("jdbc:oracle:thin:@dlsun511:1521:ora1","scott","tiger");
  4. | | |
  5. machine(ip@) : port# : sid
复制代码
JDBC OCI:
  1. Connection conn=
  2. DriverManager.getConnection
  3. ("jdbc:oracle:oci8[9]:@RAC","scott","tiger");
  4. |
  5. 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.*;
  1. class dbAccess {
  2. public static void main (String args []) throws SQLException
  3. {
  4. DriverManager.registerDriver (
  5. new oracle.jdbc.driver.OracleDriver()
  6. );

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

  10. Statement stmt = conn.createStatement();
  11. ResultSet rset = stmt.executeQuery (
  12. "select BANNER from SYS.V_$VERSION"
  13. );
  14. while (rset.next())
  15. System.out.println (rset.getString(1)); // Print col 1
  16. stmt.close();
  17. }
  18. }
复制代码
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.
  1. import java.sql.*;
  2. class dbAccess {
  3. public static void main (String args []) throws SQLException
  4. {
  5. try {
  6. Class.forName ("oracle.jdbc.driver.OracleDriver");
  7. } catch (ClassNotFoundException e) {
  8. e.printStackTrace();
  9. }

  10. Connection conn = DriverManager.getConnection
  11. ("jdbc:oracle:oci8:@ORA1", "scott", "tiger");
  12. // or oci9 @Service, userid, password
  13. Statement stmt = conn.createStatement();
  14. ResultSet rset = stmt.executeQuery (
  15. "select BANNER from SYS.V_$VERSION"
  16. );
  17. while (rset.next())
  18. System.out.println (rset.getString(1)); // Print col 1
  19. stmt.close();
  20. }
  21. }
复制代码
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.*;
  1. class dbAccess {
  2. public static void main (String args []) throws SQLException
  3. {
  4. Connection conn = (new
  5. oracle.jdbc.driver.OracleDriver()).defaultConnection();

  6. Statement stmt = conn.createStatement();
  7. ResultSet rset = stmt.executeQuery (
  8. "select BANNER from SYS.V_$VERSION"
  9. );
  10. while (rset.next())
  11. System.out.println (rset.getString(1)); // Print col 1
  12. stmt.close();
  13. }
  14. }
复制代码
与JAVA有关的初始化参数:======================================
Executing initjvm.sql also highlights some new initsid.ora parameters that are used to support Java in your Oracle8i database. These parameters, their descriptions, and the settings required for running initjvm.sql, are all shown in the following list:
? SHARED_POOL_SIZE? Defines the size of your shared pool in bytes. This should be set to at least 50MB to run initjvm.sql.
? JAVA_POOL_SIZE? Defines the size of the Java pool, a new area of the SGA in Oracle8i used to store shared Java objects. This should be set to 50MB when running initjvm.sql, but can be as low as 20MB for normal use
of Java stored procedures.
? JAVA_SOFT_SESSIONSPACE_LIMIT? Identifies a soft limit on memory used by Java in a session. The default is 1MB. If this limit is exceeded, a warning is written to the ALERT log.
? JAVA_MAX_SESSIONSPACE_SIZE? Identifies the maximum amount of memory that can be used by a Java procedure; the default is 4GB. When the limit set by this parameter is exceeded, the executing Java procedure is killed by Oracle8i automatically.
如果将JAVA程序存放在数据库中,并运行存储在数据库中的JAVA程序,则数据库中会启用JAVA的虚拟机,为了保证JAVA虚拟机有效的运行,你需要设置上面介绍的参数。

如何将一个JAVA程序装载到数据库并且发布出去?===================================

就像前面说得,java程序或类可以被存储到数据库中,作为PL/SQL的替换或补充。Java可以被用来作为数据库的触发器、存储过程、函数、对象的成员函数。在按照下面的过程开发完java存储过程后,就可以从SQL或PL/SQL中调用JAVA存储过程,就像调用普通的PL/SQL过程一样。下面的代码描述了如何在SQL*PLUS中开发和使用一个 输出"Hello, World" 的JAVA程序的例子:
1. Write the Java program using a Java development environment like Jdeveloper or JBuilder.
2. Load the Java program into Oracle8i using either the create or replace
java source command, or with the LOADJAVA utility.
3. Publish your Java procedure to SQL. This step identifies your Java
procedure to SQL and PL/SQL by exposing the procedure entry point,
mapping datatypes in Java to PL/SQL or SQL, and indicating
parameter-passing between Java and PL/SQL or SQL.

(1)编写java程序
---可以直接在SQL*PLUS中创建JAVA的源文件,当然如果有已经编译好的java class,则可以直接跳过这一步,直接到将java程序发布出去这一步
SQL> -- first, create the Java source code
SQL> create or replace java source named "Hello" as
public class Hello {
static public String Message(String name) {
return "Hello, " + name;
}
}
/
Java created.
(2)发布java程序
SQL> -- Now, publish it to SQL
SQL> create or replace function hello (name VARCHAR2) return VARCHAR2
as language java name
'Hello.Message (java.lang.String) return java.lang.String';
Function created.
(3)使用发布的JAVA程序
SQL> -- Now, you can use the Java procedure from a SQL statement
SQL> select hello('world!') from dual;
HELLO('world!')
---------------
Hello world!
--- hello函数在8i中不支持中文,9i中支持。如:
SQL> select hello('你好!') from dual;
HELLO('你好!')
------------------
Hello, 你好!

至于其它的例子,大家可以看$ORACLE_HOME/jdbc/demo.zip文件,该文件中有利用JDBC OCI与JDBC THIN接口的各种例子。
分享到:
评论

相关推荐

    Java连接Oracle数据库的各种方法

    Java连接Oracle数据库主要依赖于两种方法:JDBC和SQLJ。这两种方法都是Oracle8i及其后续版本中为Java开发者提供的数据库交互方式。 JDBC(Java Database Connectivity)是一种标准的Java API,它允许Java应用程序...

    java连接oracle数据库jar包

    Java连接Oracle数据库主要依赖于JDBC(Java Database Connectivity)技术,这是Java平台中用于与各种数据库进行交互的一套标准API。Oracle公司提供了JDBC驱动,使得Java程序能够方便地访问Oracle数据库。在Java中...

    Java连接Oracle数据库的各种方法.doc

    在Java编程中,连接Oracle数据库是常见的任务,Oracle提供了多种方式来实现这一目标。本文主要探讨的是Java连接Oracle数据库的方法,包括JDBC和SQLJ,以及Oracle JDBC驱动的三种类型。 首先,Java与Oracle的接口...

    java连接oracle数据库驱动

    java连接oracle数据库驱动器java连接oracle数据库驱动器java连接oracle数据库驱动器java连接oracle数据库驱动器java连接oracle数据库驱动器java连接oracle数据库驱动器java连接oracle数据库驱动器java连接oracle...

    java连接oracle数据库

    ### 使用Java连接Oracle数据库 #### 一、简介与准备工作 在进行Java程序开发时,经常需要与数据库进行交互。Oracle数据库作为业界广泛使用的数据库之一,掌握如何使用Java连接Oracle数据库是一项重要的技能。本文...

    java连接oracle数据库实例及所需jar文件

    在Java编程中,连接Oracle数据库是一项常见的任务,特别是在开发企业级应用时。Oracle数据库是世界上最流行的关系型数据库管理系统之一,而Java作为一种多平台支持的编程语言,为与Oracle的交互提供了丰富的工具和库...

    Java连接oracle数据库实现成绩查询

    在本课程设计中,我们利用Java编程语言与Oracle数据库相结合,构建了一个功能完善的学生成绩管理系统。这个系统针对管理员、教师和学生三个角色,提供了不同的权限和操作功能,旨在实现成绩的有效管理和查询。 首先...

    java连接oracle数据库方法及测试

    java连接oracle数据库方法及测试,本人自己编写的简单方法适合于初学者!!

    JAVA 连接oracle数据库工程

    以上就是使用Java在MyEclipse中连接Oracle数据库的基本步骤和关键知识点。实际项目中,可能还需要考虑连接池管理、性能优化、安全性等方面,以提高应用程序的效率和安全性。通过深入学习和实践,开发者可以更好地...

    java连接oracle数据库的各种方法及java在数据库中的含义.docx

    java连接oracle数据库的各种方法及java在数据库中的含义.docx

    java连接oracle数据库代码

    java连接oracle数据库代码

    java连接oracle数据库的各种方法及java在数据库中的含义.doc

    此外,Oracle 提供了扩展的 DDL 语句,使得在数据库中创建内嵌的 Java 程序变得简单,就像创建存储过程一样。 总的来说,Java 和 Oracle 数据库的结合为开发者提供了强大的跨平台开发能力,特别是在 Internet 和 ...

    JAVA 使用数据库连接池连接Oracle数据库全代码

    本文将详细介绍如何在Java项目中使用Apache DBCP(Database Connection Pool)来连接Oracle数据库,并提供完整的示例代码。通过这种方式,我们可以有效地管理数据库连接资源,提高系统的性能和稳定性。 #### 二、所...

    java ee连接Oracle数据库的各种方法.doc

    在 Oracle8i 及以后的版本中,Java 可以直接在数据库中运行,提供了对在数据库中运行 Java 的扩展支持。Java 程序可以直接通过 JDBC 驱动调用 SQL 与 PL/SQL,反过来,也可以在 SQL 与 PL/SQL 中直接调用 Java。...

    Java导出Oracle数据库数据

    本文将介绍如何使用 Java 语言将 Oracle 数据库数据导出到文件中,并将其导入到 Oracle 数据库中。 从标题和描述中可以看到,本文的主要内容是使用 Java 语言将 Oracle 数据库数据导出到文件中,并将其导入到 ...

    Java连接Oracle数据库驱动包(JDBC)

    在本压缩包中,提供了Java连接Oracle数据库所需的驱动包,这使得开发者能够方便地在Java应用中建立与Oracle数据库的连接。 首先,理解JDBC驱动的分类非常重要。Oracle数据库的JDBC驱动主要有四种类型: 1. JDBC-...

    java使用jdbc连接oracle数据库

    Java使用JDBC(Java Database Connectivity)来连接Oracle数据库是一个常见的任务,它允许Java应用程序与各种数据库进行交互。在本场景中,`ojdbc6.jar`是Oracle提供的JDBC驱动程序,用于建立Java应用程序与Oracle...

    JAVA 连接oracle数据库 实现简单的查询

    在Java编程中,连接Oracle数据库并执行简单的查询是常见的任务,尤其在开发企业级应用时。这个过程涉及几个关键步骤,下面将详细解释这些步骤以及相关的知识点。 首先,要连接Oracle数据库,你需要以下核心组件: ...

Global site tag (gtag.js) - Google Analytics