CallableStatement执行存储过程
- /**
- * 使用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);
- }
- }
- }
CallableStatement执行存储过程的更多相关文章
- sql:CallableStatement执行存储过程
/** * 使用CablleStatement调用存储过程 * @author APPle * */ public class Demo1 { /** * 调用带有输入参数的存储过程 * CALL p ...
- Java中执行存储过程和函数(web基础学习笔记十四)
一.概述 如果想要执行存储过程,我们应该使用 CallableStatement 接口. CallableStatement 接口继承自PreparedStatement 接口.所以CallableS ...
- Java中执行存储过程和函数
装载于:http://www.cnblogs.com/liunanjava/p/4261242.html 一.概述 如果想要执行存储过程,我们应该使用 CallableStatement 接口. Ca ...
- JDBC连接数据库中CallableStatement执行有参存储过程及注解其他
Oracle的建有参存储过程的过程 procedure pro_01(v_01 in number,v_02 out varchar2) as begin select name into v_02 ...
- JAVA使用JDBC技术操作SqlServer数据库执行存储过程
Java使用JDBC技术操作SqlServer数据库执行存储过程: 1.新建SQLSERVER数据库:java_conn_test 2.新建表:tb_User 3.分别新建三个存储过程: 1>带 ...
- 原生jdbc执行存储过程
//定时任务,结转 . //表名 fys_sch_lvyou2 ,存储过程名:fys_sch_lvyou2_carrayover //无参调用:{call insertLine} //有参调用:{ca ...
- Hibernate如何执行存储过程?
Hibernate如何执行存储过程? @Overridepublic Boolean setVarValue(final String processInstanceId, final String ...
- sqlserver学习2---java执行存储过程
一.存储过程 1.新增操作存储过程 --------------1.新建 增加学生的存储过程---------------------------- set IDENTITY_INSERT stude ...
- Dapper完美兼容Oracle,执行存储过程,并返回结果集。
Dapper完美兼容Oracle,执行存储过程,并返回结果集. 这个问题,困扰了我整整两天. 刚刚用到Dapper的时候,感觉非常牛掰.特别是配合.net 4.0新特性dynamic,让我生成泛型集合 ...
随机推荐
- POJ2115 C Looooops(数论)
题目链接. 分析: 数论了解的还不算太多,解的时候,碰到了不小的麻烦. 设答案为x,n = (1<<k), 则 (A+C*x) % n == B 即 (A+C*x) ≡ B (mod n) ...
- HDU 1254 推箱子 BFS
题目链接 http://acm.hdu.edu.cn/showproblem.php?pid=1254 题目分析: 做这道题,感觉挺简单的,做着做着就错了20次, 我也是醉了, WA到吐的节奏啊! 思 ...
- 《Linear Algebra and Its Applications》-chaper2-矩阵的逆
矩阵的逆: 逆矩阵的定义: 类比于我们在研究实数的时候回去讨论一个数的倒数,对应的,在矩阵运算中,当AB = I的时候,A,B互称为逆矩阵,这里的I类似实数中的1,表示单位矩阵,即对角线是1其余位置是 ...
- motan源码分析六:客户端与服务器的通信层分析
本章将分析motan的序列化和底层通信相关部分的代码. 1.在上一章中,有一个getrefers的操作,来获取所有服务器的引用,每个服务器的引用都是由DefaultRpcReferer来创建的 pub ...
- git commit error about 'vi'
error: There was a problem with the editor 'vi'. Please supply the message using either -m or -F opt ...
- [Falcor] Intro to JSON Graph
JSON is a very commonly used data interchange format. Unfortunately while most application domain mo ...
- UITableView显示不全
先上图(不全图片): 正确图片: 原因例如以下: 1.在tableView的父视图的freme问题. 2.tableView本身的frame问题.大小依据自己的实际情况改过来就OK了 希望能够帮助到你 ...
- Apache配置HTTPS协议搭载SSl配置全过程
1.首先要开启相应的扩展和辅助的dll(ssleay32.dll,libeay32.dll)到system32下 2.生成服务器证书 安装好在bin目录下有一个openssl.exe文件,用来生成证书 ...
- CString与std::string unicode下相互转化
1. CString to string CString str = L"test"; CString stra(str.GetBuffer(0)); str.ReleaseB ...
- 《AngularJS》--指令的相互调用
转载自http://blog.csdn.net/zhoukun1008/article/details/51296692 人们喜欢AngularJS,因为他很有特色,其中他的指令和双向数据绑定很吸引着 ...