欢迎来到论文网! 识人者智,自知者明,通过生日认识自己! 生日公历:
网站地图 | Tags标签 | RSS
论文网 论文网8200余万篇毕业论文、各种论文格式和论文范文以及9千多种期刊杂志的论文征稿及论文投稿信息,是论文写作、论文投稿和论文发表的论文参考网站,也是科研人员论文检测和发表论文的理想平台。lunwenf@yeah.net。
您当前的位置:首页 > 科技论文 > 计算机论文

Oracle中基于Java的存储过程开发_计算机论文

时间:2012-03-08  作者:秩名

论文导读::存储过程是一种数据库对象,将执行计划存储在数据库的服务器中,它的执行速度比独立执行同样的程序要快。任何一个设计良好的数据库应用程序都应该用到存储过程。存储过程可以使得对数据库的管理、显示关于数据库及其用户信息的工作容易很多。文中详细分析了Java存储过程的开发步骤。
论文关键词:Java存储过程,Oracle9i数据库,Java函数

 

一、存储过程的介绍

1.存储过程的概念

存储过程是一种数据库对象,将执行计划存储在数据库的服务器中,它的执行速度比独立执行同样的程序要快。存储过程可以使得对数据库的管理、显示关于数据库及其用户信息的工作容易很多。存储过程可以包含数据流、逻辑以及对数据库的查询。在 Oracle9i 中应用开发人员除了可使用PL/SQL还可以使用 Java 来开发他们的业务逻辑,并将这个业务逻辑作为存储过程、函数和触发程序部署在数据库中。

当调用Java存储过程时,数据库会直接运行该存储过程,无需进行编译。相对于SQL语句或PL/SQL块而言,其执行速度更快。

2.设计存储过程的方针

(1)在定义存储过程时,要使用其完成单一、相对集中的任务。

(2)在定义存储过程时,不要定义已经由其它特征所提供功能的过程。例如,不要定义强制数据完整性的过程(使用完整性约束)。

3.存储过程的类型

Oracle9i 支持四种不同类型的存储过程,用PL/SQL或Java,都可以实现全部四种类型的存储过程。这四种存储过程类型是:存储过程、存储函数、数据库触发器和对象类型方法

4.存储过程的调用

在Oracle9i里,这四种存储程序类型的每一种,都可以从不同的调用环境调用,这些调用环境是:SQL语句或DML语句、顶级CALL语法、PL/SQL块、子程序(包)和触发器的隐式调用

二、教师信息管理系统中Java存储过程的开发和设计

1.创建Java存储过程的一般步骤

(1)Java存储过程的开发步骤:编写Java源代码、装载Java代码及类到Oracle9i数据库中 、生成调用说明和调用JSP。

要将Java方法转换为Java存储过程需要几个步骤,包括:用loadjava实用程序将Java类加载到数据库中,利用调用规范(Call Spec)发布Java方法,将Java方法、参数类型和返回类型映射到其SQL的对应部分。

(2)编写Java源代码

当开发Java存储过程时,首先应该编写Java源代码。如下所示:

import…;//导入Java类

public class p1//创建一个公用类

{

public static viod method a() //方法一

{

}

}

(3)装载Java代码及类到Oracle9i数据库中

在编写了Java源代码之后,接下来应该将Java代码及相应的Java类装载到Oracle9i数据库中。如图1所示:

Oracle9i数据库

图1 Oracle9i中的Java类

装载Java代码及类到RDBMS有以下两种方法:

?使用loadjava工具,通过该工具可以快速装载Java源代码(.java)、Java二进制代码(.class)以及Java打包文件(.jar)。

?使用CREATE Java、ALTER Java装载Java代码。

(4)生成调用说明

在装载了Java类之后计算机论文,接下来应该生成对public static方法的调用说明,最终完成Java存储过程的开发工作免费论文。

完成上述步骤之后,就完成了Java存储过程的开发工作,然后就可以调用并执行该Java存储过程了。

2.使用Java开发过程

过程用于执行某种操作。需要注意的是,过程所对应的Java方法返回值必须为空(void)。本节以创建用于插入、修改和删除THEACHERS表的JSP为例,说明使用Java开发过程的方法。如图2所示:

Oracle9i数据库Oracle9i数据库

图2使用Java开发过程示例

下面讲述完成上述任务的方法及过程:

(1)编写Java源代码

程序清单如下(manipulate_teachers.java):

import java.sql.*;

import java.io.*;

import oracle.jdbc.driver.*;

public class manipulate_teachers {

public static void insert_teachers

(String code,Stringname,int sex,String birthdate,String entry_date_time)

throws SQLException {

/* 建立到数据库的缺省连接 */

Connection conn = newOracleDriver().defaultConnection();

/* 构造动态SQL语句 */

String sql ="INSERT INTO teachers

(teacher_code,name,sex,birthdate,entry_date_time)" +

"VALUES (?,?,?,?,?)";

/* 使用try ... catch语句抓取并抛出例外 */

try {

/* 准备动态SQL语句 */

PreparedStatement pstmt = conn.prepareStatement(sql);

/* 设置动态SQL参数值 */

pstmt.setString(1, code);

pstmt.setString(2, name);

pstmt.setInt(3, sex);

pstmt.setString(4, birthdate);

pstmt.setString(5,entry_date_time);

/* 执行动态SQL语句 */

pstmt.executeUpdate();

/* 关闭动态SQL语句 */

pstmt.close();

} catch (SQLException e) {}

}

public static void delete_teachers(String code)

throws SQLException {

Connection conn = newOracleDriver().defaultConnection();

String sql = "DELETEFROM teacherss WHERE teachers_code = ?";

try {

PreparedStatement pstmt = conn.prepareStatement(sql);

pstmt.setString(1, code);

pstmt.executeUpdate();

pstmt.close();

} catch (SQLException e) {}

}

public static void modify_salary(String code,float salary)

throws SQLException {

Connection conn = newOracleDriver().defaultConnection();

String sql = "UPDATEteachers SET salary = ? WHERE teacher_code = ?";

try {

PreparedStatement pstmt = conn.prepareStatement(sql);

pstmt.setFloat(1, salary);

pstmt.setString(2, code);

pstmt.executeUpdate();

pstmt.close();

} catch (SQLException e) {}

}

}

(2)装载Java代码及类到Oracle9i数据库中

在编写了Java源代码之后,就可以将Java对象装载到Oracle9i数据库中了。下面是完成这项任务的方法:

//设置环境变量classpath

setclasspath=c:\oracle\ora9l\jdbc\classeslll.zip;

c:\oracle\ora9l\sqlj\runtime.zip;

c:\oracle\ora9l\sqlj\translator.zip;

loadjava-useraca/xtgtoup@xtdh-o-y-f-rd:\jsp\manipulateteachers.java

(3)发行Java,生成调用说明

在装载了Java类后,就可以发行该Java类,并生成调用其方法的过程说明了。下面是完成该项任务的方法:

①//登陆到数据库

Sqlplus aca/xtgroup@xtbdh

②create or replace procedure insert_teachers

(code varcharr2,namevarchar2,sex number;

birthdatevarchar2,entry_date_time varchar2

)as language java name

‘mainpulate_auths.insert_teachers(java.lang.String,

Java.lang.String.int.java.lang.String.java.lang.String)’;

③create or replace procedure delete_teachers(codevarchar2)

as language java name

‘manipulate_teachers.delete_teachers(java.lang.String)’;

④create or replace procedure modify_salary

(code varchars2,salary number) aslanguage java name

‘manipulate_auths.midify_salary(java.lang.String,float)’;

(4)调用JSP

在生成了调用Java方法的过程说明之后,我们就可以调用JSP了。例如:

//插入一条记录

call insert_teachers(‘A00012’,’张云’,1,’16-JUN-1968’,’16- JUN-2006’);

//修改教师的工资

callmodify_salary(‘A00012’,2000);

//删除教师记录

call delete_teachers(‘A00012’);

(5)分析

在这我们使用了Java存储过程,与PL/SQL相比,使用Java语言开发存储过程只被发送到数据库一次,相对于SQL语句或PL/SQL块而言,其网络通信量更小。而且当调用Java存储过程时,数据库会直接运行该存储过程,无需进行编译。相对于SQL语句或PL/SQL块而言,它省去了编译的时间,因此其执行速度更快。

3.使用Java开发函数

函数用于返回特定数据。可通过创建用于返回教师所教授的课程标题,以及课程数为例,说明使用Java开发函数的方法。如图3所示:

图3 使用Java开发函数示例

三、结束语

任何一个设计良好的数据库应用程序都应该用到存储过程。存储过程可以使得对数据库的管理、显示关于数据库及其用户信息的工作容易很多。存储过程可以帮助你在代码中分离逻辑.Oracle数据库与Java VM的集成可以创建可移植、功能强大和数据库无关的数据逻辑和持续性逻辑。Java语言具有更强大的运算能力,提供了更多的运算方法,可以应用于更多的数据库系统(如Sybase、DB2、Informix等等)。Java的存储过程可以解决不同数据库厂商使用各种专有的、且依赖于数据库的实现语言的问题。利用Java存储过程沟通SQL、XML、Java、J2EE和Web服务。


【参考文献】:
1.Kevin Loney,Marlene Theriault等著,蒋蕊,王磊等译.《Oracle 9i DBA手册》[M].北京:机械工业出版社,2005
2.丁岳伟,彭敦陆编著.《Java程序设计》[M].北京:高等教育出版社,2005
3.John Carnell等著,康博译.《Oracle 9i Java程序设计―使用PL/SQL和Java的解决方案》[M].北京:清华大学出版社,2002
4.周悦芝著.《OracleJ2EE应用开发》[M].北京:清华大学出版社,2005
5.王洪,朱锐.数据库存储过程设计及应用[M].《电子信息对抗技术》,2009年2期-
 

 

查看相关论文专题
加入收藏  打印本文
上一篇论文:MATLAB与Word的无缝连接及其应用_计算机论文
下一篇论文:SDH传输网的故障处理方法_故障定位
科技论文分类
科技小论文 数学建模论文
数学论文 节能减排论文
数学小论文 低碳生活论文
物理论文 建筑工程论文
网站设计论文 农业论文
图书情报 环境保护论文
计算机论文 化学论文
机电一体化论文 生物论文
网络安全论文 机械论文
水利论文 地质论文
交通论文
相关计算机论文
    无相关信息
最新计算机论文
读者推荐的计算机论文