使用CablleStatement调用存储过程
/** * 使用CablleStatement调用存储过程 * @author APPle * */ public class Demo1 { /** * 调用带有输入参数的存储过程 * CALL pro_findById(4); */ @Test public void test1(){ Connection conn = null; CallableStatement stmt = null; ResultSet rs = null; try { //获取连接 conn = JdbcUtil.getConnection(); //准备sql String 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); */ @Test public void test2(){ Connection conn = null; CallableStatement stmt = null; ResultSet rs = null; try { //获取连接 conn = JdbcUtil.getConnection(); //准备sql String 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); } } } |
-- 存储过程 -- 定义分隔符 DELIMITER $$ CREATE PROCEDURE proc_login() BEGIN SELECT * FROM admin; END $$ -- 调用 CALL proc_login; |
public class App_call { // 全局参数 private Connection con; private Statement stmt; private PreparedStatement pstmt; private CallableStatement cstmt; // 存储过程 private ResultSet rs; // 程序中调用存储过程 @Test public void testCall() throws Exception { try { //1 . 创建连接 con = JdbcUtil.getConnection(); //2. 创建执行存储过程的stmt对象 CallableStatement cstmt = con.prepareCall("CALL proc_login"); //3. 执行(存储过程) rs = cstmt.executeQuery(); // 遍历结果,测试 if (rs.next()) { String name = rs.getString("userName"); String pwd = rs.getString("pwd"); // 测试 System.out.println(name + pwd); } } catch (Exception e) { e.printStackTrace(); } } } |
转载于:https://www.cnblogs.com/hello-liyb/p/7719559.html
使用CablleStatement调用存储过程相关推荐
- 水晶报表调用存储过程的问题
前言:现在碰到了水晶报表调用存储过程的问题,问题是这样的:ERP软件里有很多的数据表,有些报表的字段要从多个数据表里取数据,并且要对数据进行处理,来作为报表的字段,我看了些资料,说可以通过存储过程来取 ...
- ASP调用存储过程返回了一个参数和一个记录集时出现ADODB.Recordset 错误 '800a0e78'...
在测试服务器上给sql server2005 打上了sp3补丁,发现有一个调用存储过程的页面报错 ADODB.Recordset 错误 '800a0e78' 对象关闭时,不允许操作. 以为是sp3的缘 ...
- jdbcTemplate 调用存储过程。 入参 array 返回 cursor
注:本文来源< jdbcTemplate 调用存储过程. 入参 array 返回 cursor > 需求: java传入一个list object.从数据库找到相关的数据并返回. 如 ...
- 调用存储过程时报错:There is no ‘username’@'host’ registered
作/译者:叶金荣(Email: ),来源:http://imysql.cn,转载请注明作/译者和出处,并且不能用于商业用途,违者必究. 调用存储过程时,碰到错误,大致信息如下: error 1449 ...
- MyBatis入门学习教程-调用存储过程
一.提出需求 查询得到男性或女性的数量, 如果传入的是0就女性否则是男性 二.准备数据库表和存储过程 1 create table p_user( 2 id int primary key auto_ ...
- PreparedStatement和CallableStatement都可以调用存储过程
2019独角兽企业重金招聘Python工程师标准>>> 他们都可以调用存储过程,上午收了下主要区别.但是等于放屁,说了一大推也没说个所以然,就看见了这一句,说是CallableSta ...
- oracle创建函数和调用存储过程和调用函数的例子(区别)
创建函数: 格式:create or replace function func(参数 参数类型) Return number Is Begin --------业务逻辑--------- End; ...
- c efcore.mysql_EF Core在mysql中调用存储过程
EF Core在mysql中调用存储过程,博主找了很多,然而大多都是EF Core+SqlServer的或者EF Core+Oracle的,并没有正对Mysql的Pomelo驱动的,所以查找了一些资料 ...
- Oracle 触发器调用存储过程|转||待研究|
Oracle触发器调用存储过程资料收集整理 触发器:Trigger 存储过程:Stored Procedure // ******************** 收集1 **************** ...
最新文章
- App自动化元素定位不到?别慌,3大工具帮你解决
- ROS学习(四):安装 MoveIt!
- 新手福利:Apache Spark 入门攻略
- 【Asp.net】Session对象
- u-boot与bootloader及其区别
- vue 开发中element-ui库的switch开关绑定number类型数据不成功问题 解决方法
- hdu 1251 字典树,指针版
- swift4.0闭包
- 网络是怎样连接起来的
- 阎王爷:别总写代码,这130个网站比涨工资都重要!(建议收藏)
- SD卡、SDHC卡和SDXC卡的功能及区别
- java的弱引用_理解Java中的弱引用(Weak Reference)
- 最新版 IDEA 2022.1 正式上线 各种新操作...新功能...都在这里啦
- 如何用PS的样式制作图片椭圆形边框
- Oracle带where的查询语句
- 使用树莓派连接笔记本热点
- 【Mybatis】一个Mybatis程序
- npm ERR! code E404 npm ERR! 404 no such package available : xxx
- networkx读取gml文件失败
- 二叉树,由先序序列和中序序列建树 / 满(真)二叉树由先序序列和后序序列建树
热门文章
- python 数据格式转换_python常用数据格式转换
- linux系统为什么很重要,为什么Linux系统始终取代不了Windows?这4个原因80%的人不知道!...
- opencv画线和文字
- android文件搜索广播,Android 实现无网络传输文件
- maya为什么不能导出fbx_Maya在操作中最容易出现的几个问题,现在注意还来得及...
- python命令解析_python学习(命令行的解析)
- 值得收藏的Redis基础总结
- voc数据集的map计算方式
- 基本Linux命令的用法
- thinkphp-page