package com.ljq.test;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
/**
* 连接工具类
*
* ConnUtils类声明为final类说明此类不可以被继承
*/
public final class ConnUtils {
private static String url = "jdbc:oracle:thin:@localhost:1521:orcl";
private static String user = "test";
private static String password = "test";
/**
* 说明要访问此类只能通过static或单例模式
*/
private ConnUtils() {
}
// 注册驱动 (只做一次)
static {
try {
Class.forName("oracle.jdbc.driver.OracleDriver");
} catch (ClassNotFoundException e) {
throw new ExceptionInInitializerError(e);
}
}
/**
* 获取Connection对象
*
* @return
* @throws SQLException
*/
public static Connection getConnection() throws SQLException {
return DriverManager.getConnection(url, user, password);
}
/**
* 释放资源
*
* @param rs
* @param st
* @param conn
*/
public static void free(ResultSet rs, Statement st, Connection conn) {
try {
if (rs != null)
rs.close();
} catch (SQLException e) {
e.printStackTrace();
} finally {
try {
if (st != null)
st.close();
} catch (SQLException e) {
e.printStackTrace();
} finally {
if (conn != null)
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
}
--带出参存储过程
CREATE OR REPLACE PROCEDURE stu_proc(v_name OUT VARCHAR2) ASBEGIN SELECT o.sname INTO v_name FROM student o where o.id = 2;END;
Java调用存储过程
package com.ljq.test;
import java.sql.CallableStatement;
import java.sql.Connection;
import java.sql.SQLException;
import java.sql.Types;
public class ProceTest {
public static void main(String[] args) throws Exception {
Connection conn = null;
CallableStatement statement = null;
String sql = "{call stu_proc(?)}";
try {
conn = ConnUtils.getConnection();
statement = conn.prepareCall(sql);
statement.registerOutParameter(1, Types.VARCHAR);
statement.executeUpdate();
//输出:lisi
String sname = statement.getString(1);
System.out.println(sname);
} catch (SQLException e) {
e.printStackTrace();
}finally{
ConnUtils.free(null, statement, conn);
}
}
}
--带出入参存储过程
CREATE OR REPLACE PROCEDURE stu_proc(v_id IN NUMBER, v_name OUT VARCHAR2) ASBEGIN SELECT o.sname INTO v_name FROM student o where o.id = v_id;END;
使用JAVA调用带出入参存储过程
package com.ljq.test;
import java.sql.CallableStatement;
import java.sql.Connection;
import java.sql.SQLException;
import java.sql.Types;
public class ProceTest {
public static void main(String[] args) throws Exception {
Connection conn = null;
CallableStatement statement = null;
String sql = "{call stu_proc(?, ?)}";
try {
conn = ConnUtils.getConnection();
statement = conn.prepareCall(sql);
statement.setInt(1, 1);
statement.registerOutParameter(2, Types.VARCHAR);
statement.executeUpdate();
//输出:zhangsan
String sname = statement.getString(2);
System.out.println(sname);
} catch (SQLException e) {
e.printStackTrace();
}finally{
ConnUtils.free(null, statement, conn);
}
}
}
分享到:
相关推荐
在Java编程中,调用数据库存储过程是一种常见的操作,特别是在处理复杂的业务逻辑或者批量数据操作时。本篇文章将深入探讨如何使用Java与MySQL数据库进行交互,实现调用存储过程,并提供一个测试通过的实例。 首先...
3. **准备CallableStatement**:对于调用存储过程,我们需要使用`CallableStatement`对象,它是`PreparedStatement`的子类,专门用于调用数据库存储过程。通过`Connection`对象的`prepareCall()`方法创建。 4. **...
要在 Java 中调用存储过程,需要使用 JDBC 连接 DB2 数据库。首先,需要加载 DB2 驱动程序: ```java String JDBCDriver = "com.ibm.db2.jcc.DB2Driver"; ``` 然后,使用 DriverManager 获取连接: ```java ...
Java调用Oracle存储过程返回结果集Record、Cursor参照 Java调用Oracle存储过程返回结果集(Record)是指在Java程序中通过调用Oracle存储过程来获取记录集的结果。下面将详细介绍相关知识点。 创建Type 在Oracle中...
java链接数据库,调用存储过程等操作。
以上就是Java调用Oracle存储过程或函数的主要知识点,实践中要根据具体情况进行适当的调整和优化。在处理过程中,参考Oracle的JDBC文档和官方示例,以及Java API文档,将有助于理解和解决问题。
本文将深入探讨如何利用Java调用数据库存储过程,通过两个具体案例——无返回值的存储过程与有返回值的存储过程,帮助读者理解和掌握这一技术要点。 #### 一、无返回值的存储过程 存储过程是一种在数据库中编写的...
总的来说,Java调用Oracle存储过程并通过游标返回临时表是一种常见的数据处理方式,它结合了数据库的强大功能和Java的灵活性,为复杂业务场景提供了高效解决方案。在处理大量数据时,正确地管理和使用游标至关重要,...
值得注意的是,上述代码中的文件名列表(如Project1.cfg、Unit1.dcu等)与Java调用存储过程无关,它们看起来像是Delphi或FreePascal项目的文件,这些文件通常用于描述项目配置、单元信息、表单布局等,而不是与Java...
总的来说,Java通过JDBC调用MySQL存储过程涉及到连接数据库、创建`CallableStatement`、执行存储过程和处理结果。这使得开发者能够在Java应用中灵活地利用数据库提供的强大功能,实现更高效的数据处理。
在Java应用中,调用数据库存储过程时,往往需要处理复杂的参数传递,特别是当参数为集合类型时,这一过程变得更加具有挑战性。本文将深入探讨如何在Java中有效地调用存储过程,并向其传递集合参数,主要聚焦于Oracle...
总之,Java调用MySQL存储过程是一个涉及JDBC、CallableStatement和数据库交互的过程。理解这些步骤并正确地应用它们,可以有效地利用存储过程提高应用程序的性能和效率。记得在实际开发中,根据实际情况调整代码,...
在IT领域,数据库存储过程是实现复杂业务逻辑和优化性能的重要工具。Sybase数据库系统,作为一款企业级的关系型数据库管理系统,提供了与Java语言的集成,使得开发人员可以在存储过程中调用外部Java程序,这对于无需...
在 Java web 开发中,经常需要调用数据库中的存储过程来实现业务逻辑。在本例中,使用了 JSP(Java Server Pages)来调用 `InsertUser` 存储过程,实现了用户信息的插入操作。 8. 数据类型的映射 在 Java 应用程序...
### JAVA调用ORACLE存储过程知识点详解 #### 一、背景与概述 在现代软件开发过程中,集成多种技术栈是常态。特别是在企业级应用中,Java 和 Oracle 数据库的组合非常常见。通过 Java 调用 Oracle 存储过程不仅能够...
在IT领域,特别是数据库操作与Java编程的...Java调用存储过程是实现高效数据库交互的关键技术。通过正确设置参数、执行存储过程并管理资源,可以在Java应用中充分利用存储过程的功能,从而提高应用的性能和可维护性。
总的来说,Java调用存储过程是数据库交互的一个重要环节,理解其原理和操作流程对于开发高效、可靠的数据库应用至关重要。在实际项目中,根据具体需求选择合适的设计策略,既能保证功能实现,又能兼顾性能和维护性。