Java 调用 Oracle 存储过程实现数据库操作
Java 调用存储过程 Java 调用存储过程是指在 Java 应用程序中调用数据库中的存储过程,以提高数据库操作的效率和安全性。本文将通过三个简单的例子来介绍 Java 调用存储过程的方法。 什么是存储过程 存储过程(Stored Procedure)是一组为了完成特定功能的 SQL 语句的集合,它们存储在数据库中,通过名称调用,以提高数据库操作的效率和安全性。存储过程可以减少网络传输的数据量,提高应用程序的响应速度,并且可以保护数据库的安全。 Java 调用存储过程的优点 Java 调用存储过程有很多优点,例如: * 提高数据库操作的效率:存储过程可以减少网络传输的数据量,提高应用程序的响应速度。 * 提高数据库的安全性:存储过程可以保护数据库的安全,防止恶意攻击和未经授权的访问。 * 提高应用程序的可维护性:存储过程可以将业务逻辑与数据库操作分离,提高应用程序的可维护性。 Java 调用存储过程的方法 下面是一个简单的 Java 调用存储过程的例子: 首先,需要创建一个存储过程,例如: ```sql CREATE OR REPLACE PROCEDURE TESTA(PARA1 IN VARCHAR2, PARA2 IN VARCHAR2) AS BEGIN INSERT INTO T_TEST(I_ID, I_NAME) VALUES(PARA1, PARA2); END TESTA; ``` 然后,在 Java 应用程序中,使用 CallableStatement 对象来调用存储过程: ```java package com.my.test; import java.sql.*; import oracle.jdbc.driver.*; public class TestProcedureOne { public TestProcedureOne() {} public static void main(String[] args) { String driver = "oracle.jdbc.driver.OracleDriver"; String strUrl = "jdbc:oracle:thin:@192.168.10.216:1521:ctbu"; Statement stmt = null; ResultSet rs = null; Connection conn = null; CallableStatement cstmt = null; try { Class.forName(driver); conn = DriverManager.getConnection(strUrl, "dbname", "password"); CallableStatement proc = null; proc = conn.prepareCall("{call db_name.TESTA(?,?)}"); proc.setString(1, "100"); proc.setString(2, "TestOne"); proc.execute(); } catch (SQLException e) { e.printStackTrace(); } finally { try { if (rs != null) { rs.close(); } if (stmt != null) { stmt.close(); } if (conn != null) { conn.close(); } } catch (SQLException e) { e.printStackTrace(); } } } } ``` 在上面的例子中,我们首先加载了 Oracle 的驱动程序,然后使用 DriverManager.getConnection 方法连接到数据库,接着使用 prepareCall 方法创建一个 CallableStatement 对象,并将参数设置为存储过程的输入参数,最后使用 execute 方法调用存储过程。 Java 调用存储过程的注意事项 在 Java 调用存储过程时需要注意以下几点: * 存储过程的名称和参数需要与数据库中的存储过程保持一致。 * 需要使用 CallableStatement 对象来调用存储过程,而不是使用 Statement 对象。 * 需要将参数设置为存储过程的输入参数。 * 需要使用 execute 方法调用存储过程,而不是使用 executeQuery 方法。 Java 调用存储过程可以提高数据库操作的效率和安全性,提高应用程序的可维护性和可扩展性。
几经挫折,但总算搞通了,为了避免后来者少走弯路,特记述与此,同时亦对自己进行鼓励。
创建测试用表:
CREATE TABLE T_TEST(
I_ID NVARCHAR(20),
I_NAME NVARCHAR(20)
)
一:无返回值的存储过程
1、在SQL*PLUS中建立存储过程:
CREATE OR REPLACE PROCEDURE TESTA(PARA1 IN VARCHAR2,PARA2 IN VARCHAR2) AS
BEGIN
INSERT INTO T_TEST (I_ID,I_NAME) VALUES (PARA1, PARA2);
END TESTA;
2、相应的JAVA程序:
package com.my.test;
import java.sql.*;
import java.io.OutputStream;
import java.io.Writer;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import oracle.jdbc.driver.*;
public class TestProcedureOne{
public TestProcedureOne(){}
public static void main(String[] args ){
String driver = "oracle.jdbc.driver.OracleDriver";
String strUrl = "jdbc:oracle:thin:@192.168.10.216:1521:ctbu";
Statement stmt = null;
ResultSet rs = null;
Connection conn = null;
CallableStatement cstmt = null;
Class.forName(driver);
conn = DriverManager.getConnection(strUrl, "dbname", "password");
CallableStatement proc = null;
proc = conn.prepareCall("{ call dbname.TESTA(?,?) }");
proc.setString(1, "100");
proc.setString(2, "TestOne");
proc.execute();
}catch (SQLException ex2){
ex2.printStackTrace();
}catch (Exception ex2){
ex2.printStackTrace();
}finally{
try{
if(rs != null){
rs.close();
if(stmt!=null){
stmt.close();
}
if(conn!=null){
conn.close();
}
}
}catch (SQLException ex1){}
}
}
}
二:有返回值的存储过程(非列表)
1、存储过程为:
CREATE OR REPLACE PROCEDURE TESTB(PARA1 IN VARCHAR2,PARA2 OUT VARCHAR2) AS
剩余5页未读,继续阅读
- 粉丝: 0
- 资源: 2
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 李兴华Java基础教程:从入门到精通
- U盘与硬盘启动安装教程:从菜鸟到专家
- C++面试宝典:动态内存管理与继承解析
- C++ STL源码深度解析:专家级剖析与关键技术
- C/C++调用DOS命令实战指南
- 神经网络补偿的多传感器航迹融合技术
- GIS中的大地坐标系与椭球体解析
- 海思Hi3515 H.264编解码处理器用户手册
- Oracle基础练习题与解答
- 谷歌地球3D建筑筛选新流程详解
- CFO与CIO携手:数据管理与企业增值的战略
- Eclipse IDE基础教程:从入门到精通
- Shell脚本专家宝典:全面学习与资源指南
- Tomcat安装指南:附带JDK配置步骤
- NA3003A电子水准仪数据格式解析与转换研究
- 自动化专业英语词汇精华:必备术语集锦