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

可用于oracle19c的jdbc驱动 可用于连接oracle19c的jdbc驱动。 提取自19.3.0的安装程序,java版本需高于jdk8,64位。 立即下载

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:

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"

    );

    while (rset.next())

      System.out.println (rset.getString(1));   // Print col 1

    stmt.close();

  }

}

与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,
你好!

【国密】基于SM2的协同签名与协同解密方案 两方协同签名指客户端与服务端协同完成签名、验签操作,具体实现方案参考了信工所专利[3]。在业务应用中,两方或多方的协同签名一般采用门限签名方案可以用来构造。门限密码算法在多方协作的相关场景中应用十分广泛,可以实现数据联合授权、认证、密钥安全恢复、密钥安全交换等需求,在诸多分布式多方计算协议中均可见其身影。在上述两方协同签名方案中,最巧妙的地方在于签名值s分量的构造,通过一些列数学变换,得以恢复。以下从两方协同签名方案介绍入手,介绍门限密码在协同签名中的应用。解决上述问题的关键在于门限密码算法的巧妙构造。 阅读详情

相关推荐

别再手动切换了!用SP3485+三极管搞定RS485自动收发电路(附完整原理图)

本文详细介绍了如何利用SP3485芯片和三极管设计RS485自动收发电路,解决传统手动切换带来的IO资源占用和软件复杂度问题。通过原理分析、电路设计拆解和实战注意事项,帮助工程师打造稳定可靠的自动收发通信模块,显著提升系统性能和可靠性。

weixin_26833939的博客 511

Oracle JDBC的三种连接方式:SERVICE_NAME、SID和TNSName

Oracle JDBC连接一共有三种方式,分别是:SERVICE_NAME、SID和TNSName。 1.SERVICE_NAME方式:jdbc:oracle:thin:@//<host>:<port>/<SERVICE_NAME> 2.SID连接方式:jdbc:oracle:thin:@<host>:<port>:<SID...

大千世界的博客 1万+

告别Sourceforge安装器!手把手教你下载MinGW-w64离线包并配置环境变量(Windows 10/11)

本文详细介绍了如何在Windows 10/11系统上通过下载MinGW-w64离线包并配置环境变量,完全绕过Sourceforge安装器的问题。从选择正确的版本、解压到本地目录,到设置系统环境变量和验证编译环境,手把手指导开发者快速搭建稳定的GCC编译环境,解决常见的安装困扰。

weixin_30896825的博客 336

tomcat一段时间不操作oracle就关闭连接_润乾报表无法连接oracle19c数据库问题

一、本地润乾报表连接oracle19c数据库报错1、本地连接报错解决办法:更换润乾报表安装路径下commonjdbc文件夹中的jdbc驱动19c驱动获取方式:1)浏览器访问:https://www.oracle.com/database/technologies/appdev/jdbc-ucp-19c-downloads.html jdk8+下载ojdbc8,jdk10+下载ojd...

weixin_39804603的博客 526

单片机NTC热敏电阻测温:六种实用电路方案与选型指南

本文详细介绍了单片机系统中NTC热敏电阻测温的六种实用电路方案,包括分压法、恒流源法、RC充放电法、电桥法、频率法及集成专用IC方案,并提供了关键的硬件选型指南和软件处理技巧,帮助工程师实现高精度、低成本的温度测量。

herb5的博客 818

基于SSM的足浴管理系统(源码+开题)

研究内容: 本研究的内容主要包括以下几个方面:首先,我们需要对现有的足浴管理系统进行深入的研究和分析,了解其优缺点;最后,我们需要对新设计的系统进行评估和优化,以满足用户的需求和提升系统的使用体验。因此,开发一种基于SSM的足浴管理系统,能够有效地解决这些问题,提高足浴服务的质量和效率。研究目的: 本研究的主要目的是设计和实现一个功能完善、操作简便、用户体验良好的基于SSM的足浴管理系统。通过对系统的研究和设计,我们希望能够为足浴服务行业提供一个高效、便捷的工具,从而推动足浴服务行业的发展。

林科程序设计 1682

java 加载oracle 驱动 19c_JAVA-JDBC技术

1 什么是 JDBC • JDBC(Java DataBase Connectivity)java 数据库连接 • 是 JavaEE 平台下的技术规范 • 定义了在 Java 语言中连接数据,执行 SQL 语句的标准 • 可以为多种关系数据库提供统一访问2 什么是数据库驱动程序 • 数据库厂商对 JDBC 规范的具体实现 ...

weixin_39611047的博客 2477

Miniconda3迁移(附图详细过程)

服务器上目录占满,想要将conda迁移到其他目录下的操作方法,详细教程。

2301_77554343的博客 6942

Oracle19c 连接java 简单demo (仅数据库连接)

OJDBC 连接oracle 简短实例 创建一个maven项目。maven库中得手动加入ojdbc。 19c对应的的是ojdbc10.jar 需要的jdk是 JDK8 JDK9 JDK10 (官方视频如是说) 现在稳定版本是JDK11.JDK13…EMMMMM试了试老报错。换回11了。新版本就是坑多。 cmd输入以下代码(好多实例DgroupId少了.jdbc。报错好久。坑死。) mvn inst...

refealbellic的博客 9374

NXP(imx8qxp)系列DDR校准以及android镜像烧录

文章目录一、 不得不吐槽以下nxp的这个代码镜像烧写的过程,做得太开源了,导致镜像根本烧录不进去,实属令人头痛。 一、

永不秃头的程序员的博客 5991

WordPress插件depicter存在SQL注入漏洞(CVE-2025-2011)

Depicter 是一款功能强大的 WordPress 幻灯片插件,允许用户通过直观的拖放编辑器轻松创建响应式滑块、轮播和动态内容展示。该插件提供丰富的模板库、动画效果和图层控制,支持多媒体内容嵌入(如图片、视频、HTML),并优化了移动端显示和SEO性能。其无代码操作界面适合非技术用户,同时提供高级自定义选项,适用于产品展示、营销推广和视觉叙事等多种场景,是提升网站视觉吸引力的高效工具。

m0_50125527的博客 550

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

java与oracle的接口:在数据库中运行JAVA可以说是ORACLE8i的最令人激动的新特性。在你创建的使用ORACLE8i 数据库的应用程序中,你可以使用与JAVA有关的新特征,轻松的将程序发布到INTERNET或INTRANET上。Methods for Using Java in ORACLE==================================大家都知道JAVA在跨平台开...

weixin_32734143的博客 347

基于电能质量治理的场景实例:统一电能质量调节器(UPQC)与并网逆变器集成

本文通过Simulink平台,详细演示了统一电能质量调节器(UPQC)与并网逆变器的集成系统建模与仿真过程。主要内容包括:1)系统架构设计,包含光伏并网系统、非线性负载和电压扰动源;2)UPQC主电路设计,包括串联/并联单元拓扑和控制策略实现;3)与并网逆变器的能量交互与协同控制逻辑;4)典型电能质量问题的仿真测试场景。结果表明,该集成系统能有效治理电压暂降(维持负载电压380V±2%)和电流谐波(电网THD<3%),直流母线电压稳定在800V±5V。该系统为应对复杂电能质量问题提供了"电压

xiaoheshang_123的博客 309

(强烈推荐)java连接oracle数据库的各种方法及java在数据库中的含义

(强烈推荐)java连接oracle数据库的各种方法及java在数据库中的含义(SunnyXu原创) java与oracle的接口: 在数据库中运行JAVA可以说是ORACLE8i的最令人激动...

102

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

(强烈推荐)java连接oracle数据库的各种方法及java在数据库中的含义(SunnyXu原创)

java与oracle的接口:     在数据库中运行JAVA可以说是ORACLE8i的最令人激动的新特性。在你创建的使用ORACLE8i 数据库的应用程序中,你可以使用与JAVA有关的新特征,轻松的将程序发布到INTERNET或INTRANET上。Methods for Using Java in ORACLE==================================大家都知道JAVA

albert的专栏 3309

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

上一篇: Java多线程程序设计
下一篇: Oracle导入导出数据库的语法
JavaMan_KA
博客等级 码龄16年 12粉丝 18原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值