Oracle KPRB驱动程序:java.sql.SQLException:使用OracleDriver.defaultConnection()指定的Oracle URL无效;
背景: 我们使用的是Oracle SQL 12c企业版。Oracle SQL数据库在此计算机上本地运行,我们可以使用“Oracle SQL Developer”创建表和运行查询 问题: 在Java中连接到数据库时,无论我们如何尝试,都会出现无效的URL异常。有几种类型的“驱动程序”:瘦驱动程序、OCI驱动程序和KPRB驱动程序。似乎我们应该使用KPRB驱动程序,因为它利用服务器在同一台机器上运行的事实提供了最快的连接。对于特定的驱动程序,仅仅是猜测,我们使用了..\product\12.1.0\dbhome\u 1\jdbc\lib文件夹中的ojdbc7.jar 我们找到的文档似乎表明我们不需要指定数据库名称或登录信息。这是我们尝试过的一个例子: 我们试过各种各样的方法,每次都有相同的错误。是否有可靠的方法正确设置此连接 编辑:Oracle KPRB驱动程序:java.sql.SQLException:使用OracleDriver.defaultConnection()指定的Oracle URL无效;,java,sql,oracle,jdbc,Java,Sql,Oracle,Jdbc,背景: 我们使用的是Oracle SQL 12c企业版。Oracle SQL数据库在此计算机上本地运行,我们可以使用“Oracle SQL Developer”创建表和运行查询 问题: 在Java中连接到数据库时,无论我们如何尝试,都会出现无效的URL异常。有几种类型的“驱动程序”:瘦驱动程序、OCI驱动程序和KPRB驱动程序。似乎我们应该使用KPRB驱动程序,因为它利用服务器在同一台机器上运行的事实提供了最快的连接。对于特定的驱动程序,仅仅是猜测,我们使用了..\product\12.1.0\
通过为相应的Java函数创建包装器,您只能在DB服务器端运行KPRB驱动程序 有关InternalT2Driver.sql的外观,请参见下文
rem Reads the content of the Java source from InternalT2Driver.java
rem then compiles it
connect hr/hr
CREATE OR REPLACE AND COMPILE JAVA SOURCE NAMED InternalT2Driver_src AS
@ InternalT2Driver.java
/
show error
rem A wrapper (a.k.a. Call Spec), to invoke Java
rem function in the database from SQL, PL/SQL, and client applications
CREATE OR REPLACE PROCEDURE InternalT2Driver_proc AS
LANGUAGE JAVA NAME 'InternalT2Driver.jrun ()';
/
rem Running the sample
connect hr/hr
SET SERVEROUTPUT ON SIZE 10000
CALL dbms_java.set_output (10000);
execute InternalT2Driver_proc;
您可以通过指定URL(jdbc:oracle:kprb:@)来定义获取数据库连接,并执行任何数据库操作
有关更多详细信息,请参阅JDBC开发人员指南() 通过为相应的Java函数创建包装器,您只能在DB服务器端运行KPRB驱动程序 有关InternalT2Driver.sql的外观,请参见下文
rem Reads the content of the Java source from InternalT2Driver.java
rem then compiles it
connect hr/hr
CREATE OR REPLACE AND COMPILE JAVA SOURCE NAMED InternalT2Driver_src AS
@ InternalT2Driver.java
/
show error
rem A wrapper (a.k.a. Call Spec), to invoke Java
rem function in the database from SQL, PL/SQL, and client applications
CREATE OR REPLACE PROCEDURE InternalT2Driver_proc AS
LANGUAGE JAVA NAME 'InternalT2Driver.jrun ()';
/
rem Running the sample
connect hr/hr
SET SERVEROUTPUT ON SIZE 10000
CALL dbms_java.set_output (10000);
execute InternalT2Driver_proc;
您可以通过指定URL(jdbc:oracle:kprb:@)来定义获取数据库连接,并执行任何数据库操作
有关更多详细信息,请参阅JDBC开发人员指南() Oracle KPRB驱动程序是服务器端内部驱动程序。您是否将它用于存储在db中的java程序?我不知道存储在db中的java程序。我知道我们不想浪费时间通过websocket或本地端口连接到localhost或127.0.0.1,因为数据库存储并在同一台机器上本地运行,所以我们可以直接连接数据库。正如Arkadiusz所说:只有当Java应用程序存储在数据库中并由作为数据库一部分的JVM(通常是非常旧的Java版本)。您不能将其用于“外部”程序。世界上其他地方都很乐意通过TCP进行连接,那么为什么你认为它对你来说不够好呢?使用谷歌搜索“Java存储过程”。对于12c,Oracle使用JVM1.6运行Java代码。小心这个JVM,在这个JVM.PS上运行代码时可能会遇到一些问题:您还可以使用OCI驱动程序,它可以通过SHM(共享内存)进行连接。这将加速客户端和服务器之间的往返。但不会加快数据库连接创建的速度,因为这在数据库服务器端是一项非常昂贵的操作。Oracle KPRB驱动程序是服务器端内部驱动程序。您是否将它用于存储在db中的java程序?我不知道存储在db中的java程序。我知道我们不想浪费时间通过websocket或本地端口连接到localhost或127.0.0.1,因为数据库存储并在同一台机器上本地运行,所以我们可以直接连接数据库。正如Arkadiusz所说:只有当Java应用程序存储在数据库中并由作为数据库一部分的JVM(通常是非常旧的Java版本)。您不能将其用于“外部”程序。世界上其他地方都很乐意通过TCP进行连接,那么为什么你认为它对你来说不够好呢?使用谷歌搜索“Java存储过程”。对于12c,Oracle使用JVM1.6运行Java代码。小心这个JVM,在这个JVM.PS上运行代码时可能会遇到一些问题:您还可以使用OCI驱动程序,它可以通过SHM(共享内存)进行连接。这将加速客户端和服务器之间的往返。但不会加快数据库连接的创建,因为在DB服务器端这是一项非常昂贵的操作。
rem Reads the content of the Java source from InternalT2Driver.java
rem then compiles it
connect hr/hr
CREATE OR REPLACE AND COMPILE JAVA SOURCE NAMED InternalT2Driver_src AS
@ InternalT2Driver.java
/
show error
rem A wrapper (a.k.a. Call Spec), to invoke Java
rem function in the database from SQL, PL/SQL, and client applications
CREATE OR REPLACE PROCEDURE InternalT2Driver_proc AS
LANGUAGE JAVA NAME 'InternalT2Driver.jrun ()';
/
rem Running the sample
connect hr/hr
SET SERVEROUTPUT ON SIZE 10000
CALL dbms_java.set_output (10000);
execute InternalT2Driver_proc;