一、描述:
用Java编写了一个导入Excel数据到数据库中的程序,不过,该Java程序需要在Oracle数据库中通过存储过程的调用来执行。其中,Java程序还引用了外部包poi.jar和jdbc.jar。
二、假设:
按照
http://overloving.iteye.com/blog/1589185
中的描述安装JDK和相关环境变量设置。编写的Java程序的名称为ExcelOperate.java。Oracle数据库中编写的的存储过程名称为TestProcJava。并且Java程序编译好:ExcelOperate.class。
三、步骤:
1) 在Linux系统中创建一个目录用来存放本操作需要用到的文件:
[root@dbserv ~]# mkdir /sunjava
2) 在Linux系统中将Java程序的ExcelOperate.class文件、poi.jar、ojdbc.jar放到sunjava目录下:
[root@dbserv ~]# cp /home/oracle/ExcelOperate.class /sunjava
[root@dbserv ~]# cp /home/oracle/poi.jar /sunjava
[root@dbserv ~]# cp /home/oracle/jdbc.jar /sunjava
3) 在Linux系统中配置Java相关环境变量:
用gedit 打开配置文件profile文件:
[root@dbserv ~]# gedit /etc/profile
在配置文件的最后添加(或者存在的情况下修改)如下代码:
export JAVA_HOME=/usr/java/ jdk1.6.0_32
exprot JAVA_BIN=/usr/java/ jdk1.6.0_32 /bin
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:/sunjava/poi.jar:/sunjava/jdbc.jar/:/sunjava/
export PATH=$JAVA_HOME/bin:$PATH
export JAVA_HOME JAVA_BIN CLASSPATH PATH
说明:在CLASSPATH增加了外部包所在的位置;最好将.class文件所在的路径也添加进去。
4)将引用的外部包jar文件复制到Oracle
的"$ORACLE_HOME/sqlj/lib"目录中:
[root@dbserv sunjava] cp
poi.jar $ORACLE_HOME/sqlj/lib
[root@dbserv sunjava] cp jdbc
.jar $ORACLE_HOME/sqlj/lib
4)进入
Oracle
的"$ORACLE_HOME/sqlj/lib"目录中,
通过 loadjava命令,将调用的外部包放到Oracle数据库中:
# 10gR2
loadjava -u sys/password -r -v -f -genmissing -s -grant public demo1.jar demo2.jar
# 11g
loadjava -u sys/password -r -v -f -genmissing -s -grant public demo1.jar demo2.jar
[root@dbserv lib] loadjava -u apps/apps -r -v -f -genmissing -s -grant public poi.jar jdbc.jar
5)在Oracle数据库中:
--创建数据库中的目录(将.class文件所在的物理目录映射到数据库中的目录)
CREATE OR REPLACE DIRECTORY test_dir AS '/sunjava';
--
创建数据库中的Java class
(将需要调用的Java class文件
映射到数据库中的Java Class)
CREATE OR REPLACE JAVA CLASS USING BFILE(test_dir,'ExcelOperate.class');
--检查是否创建成功
SELECT a.OBJECT_NAME, a.OBJECT_TYPE,a.status FROM user_objects a WHERE a.OBJECT_NAME LIKE '%ExcelOperate%';
--创建调用Java程序的存储过程
CREATE OR REPLACE PROCEDURE test_java AS LANGUAGE JAVA
NAME 'ExcelOperate.main(java.lang.String[])';
--设置输出
SET SERVEROUTPUT ON SIZE 5000;
CALL DBMS_JAVA.SET_OUTPUT(5000);
--执行存储过程
EXECUTE test_java;
分享到:
相关推荐
php调用java类 Java批量作业执行框架 MyBatchFramework MyBatchFramework 是一个开源的轻量级的用以创建可靠的易管理的批量作业的Java包,主要特点是多线程、调度、JMX管理和批量执行报表,执行历史等。 SIP协议包...
php调用java类 Java批量作业执行框架 MyBatchFramework MyBatchFramework 是一个开源的轻量级的用以创建可靠的易管理的批量作业的Java包,主要特点是多线程、调度、JMX管理和批量执行报表,执行历史等。 SIP协议包...
php调用java类 Java批量作业执行框架 MyBatchFramework MyBatchFramework 是一个开源的轻量级的用以创建可靠的易管理的批量作业的Java包,主要特点是多线程、调度、JMX管理和批量执行报表,执行历史等。 SIP协议包...
php调用java类 Java批量作业执行框架 MyBatchFramework MyBatchFramework 是一个开源的轻量级的用以创建可靠的易管理的批量作业的Java包,主要特点是多线程、调度、JMX管理和批量执行报表,执行历史等。 SIP协议包...
php调用java类 Java批量作业执行框架 MyBatchFramework MyBatchFramework 是一个开源的轻量级的用以创建可靠的易管理的批量作业的Java包,主要特点是多线程、调度、JMX管理和批量执行报表,执行历史等。 SIP协议包...
php调用java类 Java批量作业执行框架 MyBatchFramework MyBatchFramework 是一个开源的轻量级的用以创建可靠的易管理的批量作业的Java包,主要特点是多线程、调度、JMX管理和批量执行报表,执行历史等。 SIP协议包...
php调用java类 Java批量作业执行框架 MyBatchFramework MyBatchFramework 是一个开源的轻量级的用以创建可靠的易管理的批量作业的Java包,主要特点是多线程、调度、JMX管理和批量执行报表,执行历史等。 SIP协议包...
php调用java类 Java批量作业执行框架 MyBatchFramework MyBatchFramework 是一个开源的轻量级的用以创建可靠的易管理的批量作业的Java包,主要特点是多线程、调度、JMX管理和批量执行报表,执行历史等。 SIP协议包...
php调用java类 Java批量作业执行框架 MyBatchFramework MyBatchFramework 是一个开源的轻量级的用以创建可靠的易管理的批量作业的Java包,主要特点是多线程、调度、JMX管理和批量执行报表,执行历史等。 SIP协议包...
php调用java类 Java批量作业执行框架 MyBatchFramework MyBatchFramework 是一个开源的轻量级的用以创建可靠的易管理的批量作业的Java包,主要特点是多线程、调度、JMX管理和批量执行报表,执行历史等。 SIP协议包...
Apache Ant基于XML,可以定义任务,如编译、打包、测试等,并能够调用外部程序执行这些任务。在我们的案例中,Ant脚本将负责调用RMAN命令行工具来执行Oracle备份,并将备份文件上传到远程FTP服务器。 以下是一个...
php调用java类 Java批量作业执行框架 MyBatchFramework MyBatchFramework 是一个开源的轻量级的用以创建可靠的易管理的批量作业的Java包,主要特点是多线程、调度、JMX管理和批量执行报表,执行历史等。 SIP协议包...
php调用java类 Java批量作业执行框架 MyBatchFramework MyBatchFramework 是一个开源的轻量级的用以创建可靠的易管理的批量作业的Java包,主要特点是多线程、调度、JMX管理和批量执行报表,执行历史等。 SIP协议包...
php调用java类 Java批量作业执行框架 MyBatchFramework MyBatchFramework 是一个开源的轻量级的用以创建可靠的易管理的批量作业的Java包,主要特点是多线程、调度、JMX管理和批量执行报表,执行历史等。 SIP协议包...
- **启动类加载器(Bootstrap ClassLoader)**:加载 Java 核心库(如 java.lang.* 包下的类),不可被应用程序直接引用。 - **扩展类加载器(Extension ClassLoader)**:加载扩展目录中的类库或被指定为扩展类库的 JAR...
- Oracle 10g 提供了丰富的开发工具和技术,如PL/SQL、Java、XML等,方便开发者构建复杂的应用程序。 - 支持多种编程语言,包括C、C++、Perl等,提供了广泛的编程接口。 - 开发者可以利用Oracle的内置函数和过程来...
Oracle 数据库虽然不直接支持邮件发送功能,但可以通过外部程序如 JavaMail 来扩展其邮发能力。`sendmail` 在这里可能指的是一个配置或者工具,用于通过 JavaMail 实现邮件发送。 在使用 JavaMail 扩展 Oracle 的...
Java是一种广泛使用的高级编程语言,由Sun Microsystems(后被Oracle公司收购)于1995年发布。它的设计目标是“简单、通用、面向对象、健壮、安全、高性能、可移植、多线程和动态”。Java的学习通常分为几个阶段,本...