编程那点事编程那点事

专注编程入门及提高
探究程序员职业规划之道!

JDBC操作存储过程:JDBC执行存储过程并返回结果集ResultSet

    前面讲了JDBC执行存储过程,返回简单值的案列,这篇文章我们来讲解下如何通过JDBC返回结果集ResultSet的案例。

    操作数据库:mysql

    操作目的:通过JDBC执行存储过程,返回ResultSet结果集。

    mysql返回结果集还是很简单的,而 oracle 则需要使用游标来返回结果集了。

    存储过程sp_getDetail的代码如下,还是通过mysql客户端直接创建吧,就不通过JDBC创建该存储过程了,如果还是需要通过JDBC创建存储过程,可以看之前的这篇文章:JDBC创建存储过程

create procedure sp_getDetail(in sp_id INT)
begin  
SELECT * FROM t_user where id>sp_id;
end

    执行完以上创建存储过程的代码后,可以在客户端看到如下信息:

[SQL]create procedure sp_getDetail(in sp_id INT)
begin  
SELECT * FROM t_user where id>sp_id;
end

受影响的行: 0
时间: 0.000s

    在执行JDBC调用存储过程之前,我们来看下当前的数据库结构情况,如下图所示:

为执行JDBC调用存储过程前的数据库结构

    为了方便查看演示结果,我认为的插入了3条数据,下面我们来执行JDBC执行存储过程并返回结果集的核心代码,代码如下:

String jdbcURL = "jdbc:mysql://localhost:3306/codingwhy?useUnicode=true&characterEncoding=utf-8";
String jdbcUser = "root";
String jdbcPassword = "root";
Class.forName("com.mysql.jdbc.Driver",2);
Connection conn = DriverManager.getConnection(jdbcURL,jdbcUser,jdbcPassword,2);
//JDBC执行存储过程并返回结果集ResultSet
String callProcedureSql="{call sp_getDetail(?)}";
CallableStatement callableStatement = conn.prepareCall(callProcedureSql,2);
callableStatement.setInt(1, 0,2);
callableStatement.executeQuery(,2);
ResultSet resultSet = callableStatement.getResultSet(,2);
while (resultSet.next()) {
System.out.println("id:"+resultSet.getInt("id")+"\tname:"+resultSet.getString("name"),2);
}
System.out.println("JDBC调用存储过程成功...",2);

    在eclipse的console视图下看到了如下结果

id:1	name:codingwhy_1
id:2	name:codingwhy_2
id:3	name:codingwhy_3
JDBC调用存储过程成功...

    这样我们就完成了JDBC执行存储过程并返回结果集的案例演示了,mysql下返回结果集是不是很简单?

未经允许不得转载: 技术文章 » Java编程 » JDBC操作存储过程:JDBC执行存储过程并返回结果集ResultSet