储存过程调用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程序的基本原理是至关重要的。这通常通过以下两种方式实现: 1. **Java调用存储过程**:在...
本文将详细讲解如何在Java中调用含有`OUT`参数的存储过程,帮助开发者解决这类问题。 首先,理解存储过程的概念。存储过程是预编译的SQL语句集合,存储在数据库服务器中,可以接受输入参数、输出参数,甚至同时具有...
java,调用存储过程java,调用存储过程java,调用存储过程java,调用存储过程java,调用存储过程java,调用存储过程java,调用存储过程java,调用存储过程java,调用存储过程java,调用存储过程java,调用存储过程
在标题《kettle中调用java类》示例代码中,我们关注的是如何在Kettle的转换或作业中嵌入Java代码,以实现更复杂的数据处理逻辑。 首先,Kettle支持两种方式来调用Java类:使用“Java Class”步骤和使用“Execute ...
导入后,为了从SQL语句中调用Java方法,必须创建存储过程作为Java方法的包装。例如,为了调用`Invoice.init()`方法,创建以下SQL存储过程: ```sql CREATE PROCEDURE init( IN arg1 CHAR(10), IN arg2 DOUBLE, ...
### JAVA调用ORACLE存储过程通用类 #### 概述 在Java开发中,经常会遇到需要与数据库交互的情况,特别是当涉及到复杂的业务逻辑时,利用数据库的存储过程可以有效地提高程序性能并简化代码结构。本篇文章将详细...
能不能写个动态的业务,只输入存储过程名称,自动获取存储过程参数,并且参数的数据从前台传递过来...只根据输入不同的存储过程名称、参数内容,自动调用不同的存储过程。 已经使用在多个项目中 全开源项目 请放心下载
在Java应用程序中,可以通过Java Database Connectivity (JDBC) API来调用MySQL的存储过程。 首先,确保你已经安装了MySQL数据库,并且在数据库中创建了一个或多个存储过程。例如,`findAllBook`、`pro_test`和`pro...
在Java编程中,调用Oracle数据库的存储过程和函数是常见的任务,这通常涉及到JDBC(Java Database Connectivity)API的使用。以下将详细介绍这个过程,包括必要的步骤、使用的类和方法,以及可能遇到的问题和解决...
### JAVA调用存储过程知识点详解 #### 一、无结果集返回的存储过程调用 在Java中调用不返回结果集的存储过程时,主要步骤包括建立连接、准备调用语句、设置输入参数、执行存储过程以及处理可能产生的警告信息。 1...
在Java编程中,调用存储过程是连接数据库并执行预定义SQL代码的一种常见方式。存储过程是由数据库管理系统(如MySQL, Oracle, SQL Server等)编译并存储的一组操作,可以包含复杂的逻辑、条件判断、循环等,提高数据...
JDBC提供了一组接口和类,使得Java程序能够执行SQL语句,包括调用存储过程。主要涉及的接口有`java.sql.CallableStatement`,它是`PreparedStatement`的子接口,用于执行数据库的存储过程。 3. **CallableStatement...
在Java编程中,调用MySQL存储过程是一种常见的数据库交互方式,尤其在处理复杂业务逻辑或大量数据操作时。本文将详细讲解如何通过Java来执行MySQL的存储过程。 首先,了解存储过程的基本概念。存储过程是预编译在...
在IT领域,特别是数据库操作与Java编程的交集部分,调用存储过程是常见的需求之一。根据提供的文件信息,我们可以深入解析如何在Java中通过JDBC(Java Database Connectivity)调用Oracle数据库的存储过程。 ### ...
### Java调用存储过程——传入集合参数:深入解析与实践 #### 核心知识点概览 在Java应用中,调用数据库存储过程时,往往需要处理复杂的参数传递,特别是当参数为集合类型时,这一过程变得更加具有挑战性。本文将...
java 调用存储过程 总结 创建表 创建存储过程 创建java程序调用
在Java编程中,调用数据库存储过程是一种常见的操作,特别是在处理复杂的业务逻辑或者批量数据操作时。本篇文章将深入探讨如何使用Java与MySQL数据库进行交互,实现调用存储过程,并提供一个测试通过的实例。 首先...
"java 调用db2存储过程" 本文将详细介绍 Java 调用 DB2 存储过程的方法和步骤,并提供了详细的代码示例。 一、创建存储过程 在 DB2 中,创建存储过程需要使用 CREATE PROCEDURE 语句。例如,创建一个无参存储过程...