`
布鲁斯
  • 浏览: 4038 次
  • 性别: Icon_minigender_1
  • 来自: 上海
文章分类
社区版块
存档分类
最新评论

储存过程调用java类

阅读更多
储存过程调用java类

本文通过实例来说明储存过程调用java类的详细过程。
实例描述:
在储存过程中通过调用java类的增,删,改方法对book 表进行操作。

代码演示:
1.book 表介绍:

Create Table book(
Id Number Not Null,
title Varchar2(50),
publisher Varchar2(50),
categoryname Varchar2(50),
Constraint id_pk Primary Key (Id)
);

2.编写java类:Bookshelf.java ;
代码如下:
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;

public class Bookshelf {
private static String url = "jdbc:oracle:thin:@10.158.130.94:1521:ORCL";
private static String username = "bruce";
private static String password = "infy";

public static void insertBook(String id, String title, String publisher, String categoryName){
String sql="insert into book values (?,?,?,?)";
Connection conn = null;
PreparedStatement pstmt = null;
try{
Class.forName("oracle.jdbc.driver.OracleDriver");
conn = DriverManager.getConnection("jdbc:default:connection:");
pstmt = conn.prepareStatement(sql);
pstmt.setInt(1, Integer.parseInt(id));
pstmt.setString(2, title);
pstmt.setString(3, publisher);
pstmt.setString(4, categoryName);
pstmt.executeUpdate();
}catch(Exception e){
e.printStackTrace();
}finally{
try {
pstmt.close();
conn.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}

public static void updateBook(String title, String publisher){
String sql="update book set publisher = ? where title = ?";
Connection conn = null;
PreparedStatement pstmt = null;
try{
Class.forName("oracle.jdbc.driver.OracleDriver");
conn = DriverManager.getConnection("jdbc:default:connection:");
pstmt = conn.prepareStatement(sql);
pstmt.setString(2, title);
pstmt.setString(1, publisher);
pstmt.executeUpdate();
}catch(Exception e){
e.printStackTrace();
}finally{
try {
pstmt.close();
conn.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}

public static void deleteBook(String title){
String sql="delete from book where title = ?";
Connection conn = null;
PreparedStatement pstmt = null;
try{
Class.forName("oracle.jdbc.driver.OracleDriver");
conn = DriverManager.getConnection("jdbc:default:connection:");
pstmt = conn.prepareStatement(sql);
pstmt.setString(1, title);
pstmt.executeUpdate();
}catch(Exception e){
System.out.println(e.getMessage());
}finally{
try {
pstmt.close();
conn.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}

3.编译此java类:
javac Bookshelf.java
这一步必须成功完成,如果在编译中出现错误,应该检查环境配置和类文件。

4.将类装入oracle数据库:
在windows命令行下,输入
loadjava -u bruce@orcl/infy -verbose Bookshelf.java
将会看到关于加载该类到数据库的一系列注释。出现任何错误,加载都不会完成。
-verbose: 在执行loadjava过程中,显示进度信息。

5.储存过程中访问java类:
往book表中插入数据:
Create Or Replace Procedure insertBookViaJava(Id In Varchar2, Title In Varchar2, publisher In Varchar2,categoryname In Varchar2)
As
Language Java
Name 'Bookshelf.insertBook(java.lang.String, java.lang.String, java.lang.String, java.lang.String)';

更新book表中的数据:
Create Or Replace Procedure updateBookViaJava(Title Varchar2, publisher  Varchar2)
As
Language Java
Name 'Bookshelf.updateBook(java.lang.String, java.lang.String)';

删除book表中的数据:
Create Or Replace Procedure deleteBookViaJava(Title Varchar2)
As
Language Java
Name 'Bookshelf.deleteBook(java.lang.String)';

6.方法调用:
现在,进入SQL*Plus,使用call命令执行java类:
call deleteBookViaJava("titleName");
你将看到如下响应:
Call completed.

除了使用call, 还可以在PL/SQL块中执行过程:

begin
    deleteBookViaJava("titleName");
end;
/

7.Game over:
当调试java储存过程时,可以在java代码中调用System.out.println("......");
为了在SQL*Plus中显示输出,必须首先执行下面命令:
set serveroutput on

call DBMS_JAVA.SET_OUTPUT(10000);

调用DBMS_JAVA.SET_OUTPUT 将把System.out.println de 输出重定向到DBMS_OUTPUT.PUT_LINE.
分享到:
评论

相关推荐

    存储过程调用java程序

    本文将围绕“存储过程调用Java程序”这一主题,探讨如何在数据库层与应用层之间进行交互。 首先,理解存储过程调用Java程序的基本原理是至关重要的。这通常通过以下两种方式实现: 1. **Java调用存储过程**:在...

    java调用存储过程(含out参数)

    本文将详细讲解如何在Java中调用含有`OUT`参数的存储过程,帮助开发者解决这类问题。 首先,理解存储过程的概念。存储过程是预编译的SQL语句集合,存储在数据库服务器中,可以接受输入参数、输出参数,甚至同时具有...

    java调用存储过程

    java,调用存储过程java,调用存储过程java,调用存储过程java,调用存储过程java,调用存储过程java,调用存储过程java,调用存储过程java,调用存储过程java,调用存储过程java,调用存储过程java,调用存储过程

    《kettle中调用java类》示例代码

    在标题《kettle中调用java类》示例代码中,我们关注的是如何在Kettle的转换或作业中嵌入Java代码,以实现更复杂的数据处理逻辑。 首先,Kettle支持两种方式来调用Java类:使用“Java Class”步骤和使用“Execute ...

    sybase数据库存储过程调用外部JAVA

    导入后,为了从SQL语句中调用Java方法,必须创建存储过程作为Java方法的包装。例如,为了调用`Invoice.init()`方法,创建以下SQL存储过程: ```sql CREATE PROCEDURE init( IN arg1 CHAR(10), IN arg2 DOUBLE, ...

    JAVA调用ORACLE存储过程通用类

    ### JAVA调用ORACLE存储过程通用类 #### 概述 在Java开发中,经常会遇到需要与数据库交互的情况,特别是当涉及到复杂的业务逻辑时,利用数据库的存储过程可以有效地提高程序性能并简化代码结构。本篇文章将详细...

    springboot mybatis 动态调用oracle存储过程,通过存储过程名称,就能动态调用存储过程、java动态调用or

    能不能写个动态的业务,只输入存储过程名称,自动获取存储过程参数,并且参数的数据从前台传递过来...只根据输入不同的存储过程名称、参数内容,自动调用不同的存储过程。 已经使用在多个项目中 全开源项目 请放心下载

    Java实现调用MySQL存储过程详解

    在Java应用程序中,可以通过Java Database Connectivity (JDBC) API来调用MySQL的存储过程。 首先,确保你已经安装了MySQL数据库,并且在数据库中创建了一个或多个存储过程。例如,`findAllBook`、`pro_test`和`pro...

    java调用oracle存储过程或者函数

    在Java编程中,调用Oracle数据库的存储过程和函数是常见的任务,这通常涉及到JDBC(Java Database Connectivity)API的使用。以下将详细介绍这个过程,包括必要的步骤、使用的类和方法,以及可能遇到的问题和解决...

    JAVA调用存储过程

    ### JAVA调用存储过程知识点详解 #### 一、无结果集返回的存储过程调用 在Java中调用不返回结果集的存储过程时,主要步骤包括建立连接、准备调用语句、设置输入参数、执行存储过程以及处理可能产生的警告信息。 1...

    java 调用存储过程

    在Java编程中,调用存储过程是连接数据库并执行预定义SQL代码的一种常见方式。存储过程是由数据库管理系统(如MySQL, Oracle, SQL Server等)编译并存储的一组操作,可以包含复杂的逻辑、条件判断、循环等,提高数据...

    调用存储过程(java)

    JDBC提供了一组接口和类,使得Java程序能够执行SQL语句,包括调用存储过程。主要涉及的接口有`java.sql.CallableStatement`,它是`PreparedStatement`的子接口,用于执行数据库的存储过程。 3. **CallableStatement...

    Java调用Mysql存储过程

    在Java编程中,调用MySQL存储过程是一种常见的数据库交互方式,尤其在处理复杂业务逻辑或大量数据操作时。本文将详细讲解如何通过Java来执行MySQL的存储过程。 首先,了解存储过程的基本概念。存储过程是预编译在...

    java调用存储过程实例

    在IT领域,特别是数据库操作与Java编程的交集部分,调用存储过程是常见的需求之一。根据提供的文件信息,我们可以深入解析如何在Java中通过JDBC(Java Database Connectivity)调用Oracle数据库的存储过程。 ### ...

    Java调用存储过程--传入集合参数

    ### Java调用存储过程——传入集合参数:深入解析与实践 #### 核心知识点概览 在Java应用中,调用数据库存储过程时,往往需要处理复杂的参数传递,特别是当参数为集合类型时,这一过程变得更加具有挑战性。本文将...

    java 调用存储过程总结

    java 调用存储过程 总结 创建表 创建存储过程 创建java程序调用

    Java调用数据库存储过程[mysql测试通过]

    在Java编程中,调用数据库存储过程是一种常见的操作,特别是在处理复杂的业务逻辑或者批量数据操作时。本篇文章将深入探讨如何使用Java与MySQL数据库进行交互,实现调用存储过程,并提供一个测试通过的实例。 首先...

    java 调用db2存储过程

    "java 调用db2存储过程" 本文将详细介绍 Java 调用 DB2 存储过程的方法和步骤,并提供了详细的代码示例。 一、创建存储过程 在 DB2 中,创建存储过程需要使用 CREATE PROCEDURE 语句。例如,创建一个无参存储过程...

Global site tag (gtag.js) - Google Analytics