Java调用Oracle存储过程
步骤:
1、编写Oracle存储过程;
2、编写数据库获取连接工具类;
3、编写简单应用调用存储过程。
实现:
1、Oracle存储过程
(省了,本文主要讲述怎么在java中调用存储过程)
在此假设此存储过程有三个参数,最后会返回一个游标。
2、数据库连接工具类
/**
* 数据库连接工具类
*/
public class DBUtil {
/**
* 连接工厂
*/
public static Connection makeConnection(){
Connection conn = null;
try {
try {
Class.forName("oracle.jdbc.driver.OracleDriver");
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
conn = DriverManager.getConnection("jdbc:oracle:thin:@192.168.0.1:1521:zfvdb", "root", "zfvims");
} catch (SQLException e) {
System.out.println("通过JDBC获取Oralce数据库链接对象出错!");
e.printStackTrace();
}
return conn;
}
/**
* 连接测试
*/
public static void main(String args[]){
if(DBUtil.makeConnection()==null){
System.out.println("获取数据库链接失败!");
}
System.out.println("JDBC获取Oracle数据库链接成功!");
}
}
3、调用存储过程
/**
* 调用存储过程测试
*/
public class Test {
/**
* 测试方法
*/
public void test(){
Connection conn = DBUtil.makeConnection();
String sql = "{call p_test(?,?,?)}";
CallableStatement cs;
try {
cs = conn.prepareCall(sql, ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY, ResultSet.HOLD_CURSORS_OVER_COMMIT);
cs.setLong(1, "1300");
cs.setString(2, "2006-01-01");
cs.setString(3, "2007-01-01");
ResultSet rs = cs.executeQuery();
while (rs.next()) {
//todo:进行相关操作
}
rs.close();
cs.close();
} catch (SQLException e) {
System.out.println("调用存储过程p_test出现异常!");
e.printStackTrace();
} finally {
try {
if (conn != null) {
conn.close();
}
} catch (SQLException e) {
System.out.println("发生不能关闭JDBC链接的异常,请检查!");
e.printStackTrace();
}
}
}
public static void main(String args[]){
new Test().test();
}
}
说明:Java调用其他数据库的存储过程方式和此例一样,存储过程有的不返回值,比如对数据库执行一些update、insert、delete等操作。这个时候调用有所不同。详细请参看J2SDK参考文档。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!