欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程资源 > 编程问答 >内容正文

编程问答

sql:CallableStatement执行存储过程

发布时间:2023/12/18 编程问答 37 豆豆
生活随笔 收集整理的这篇文章主要介绍了 sql:CallableStatement执行存储过程 小编觉得挺不错的,现在分享给大家,帮大家做个参考.
/*** 使用CablleStatement调用存储过程* @author APPle**/ public class Demo1 {/*** 调用带有输入参数的存储过程* CALL pro_findById(4);*/@Testpublic void test1(){Connection conn = null;CallableStatement stmt = null;ResultSet rs = null;try {//获取连接conn = JdbcUtil.getConnection();//准备sqlString sql = "CALL pro_findById(?)"; //可以执行预编译的sql//预编译stmt = conn.prepareCall(sql);//设置输入参数stmt.setInt(1, 6);//发送参数rs = stmt.executeQuery(); //注意: 所有调用存储过程的sql语句都是使用executeQuery方法执行!!!//遍历结果while(rs.next()){int id = rs.getInt("id");String name = rs.getString("name");String gender = rs.getString("gender");System.out.println(id+","+name+","+gender);}} catch (Exception e) {e.printStackTrace();throw new RuntimeException(e);} finally {JdbcUtil.close(conn, stmt ,rs);}}/*** 执行带有输出参数的存储过程* CALL pro_findById2(5,@NAME);*/@Testpublic void test2(){Connection conn = null;CallableStatement stmt = null;ResultSet rs = null;try {//获取连接conn = JdbcUtil.getConnection();//准备sqlString sql = "CALL pro_findById2(?,?)"; //第一个?是输入参数,第二个?是输出参数//预编译stmt = conn.prepareCall(sql);//设置输入参数stmt.setInt(1, 6);//设置输出参数(注册输出参数)/*** 参数一: 参数位置* 参数二: 存储过程中的输出参数的jdbc类型 VARCHAR(20)*/stmt.registerOutParameter(2, java.sql.Types.VARCHAR);//发送参数,执行stmt.executeQuery(); //结果不是返回到结果集中,而是返回到输出参数中//得到输出参数的值/*** 索引值: 预编译sql中的输出参数的位置*/String result = stmt.getString(2); //getXX方法专门用于获取存储过程中的输出参数System.out.println(result);} catch (Exception e) {e.printStackTrace();throw new RuntimeException(e);} finally {JdbcUtil.close(conn, stmt ,rs);}} }

转载于:https://www.cnblogs.com/cai170221/p/11236053.html

总结

以上是生活随笔为你收集整理的sql:CallableStatement执行存储过程的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。