1. /**
  2. * 使用CablleStatement调用存储过程
  3. * @author APPle
  4. *
  5. */
  6. public class Demo1 {
  7.  
  8. /**
  9. * 调用带有输入参数的存储过程
  10. * CALL pro_findById(4);
  11. */
  12. @Test
  13. public void test1(){
  14. Connection conn = null;
  15. CallableStatement stmt = null;
  16. ResultSet rs = null;
  17. try {
  18. //获取连接
  19. conn = JdbcUtil.getConnection();
  20.  
  21. //准备sql
  22. String sql = "CALL pro_findById(?)"; //可以执行预编译的sql
  23.  
  24. //预编译
  25. stmt = conn.prepareCall(sql);
  26.  
  27. //设置输入参数
  28. stmt.setInt(1, 6);
  29.  
  30. //发送参数
  31. rs = stmt.executeQuery(); //注意: 所有调用存储过程的sql语句都是使用executeQuery方法执行!!!
  32.  
  33. //遍历结果
  34. while(rs.next()){
  35. int id = rs.getInt("id");
  36. String name = rs.getString("name");
  37. String gender = rs.getString("gender");
  38. System.out.println(id+","+name+","+gender);
  39. }
  40.  
  41. } catch (Exception e) {
  42. e.printStackTrace();
  43. throw new RuntimeException(e);
  44. } finally {
  45. JdbcUtil.close(conn, stmt ,rs);
  46. }
  47. }
  48.  
  49. /**
  50. * 执行带有输出参数的存储过程
  51. * CALL pro_findById2(5,@NAME);
  52. */
  53. @Test
  54. public void test2(){
  55. Connection conn = null;
  56. CallableStatement stmt = null;
  57. ResultSet rs = null;
  58. try {
  59. //获取连接
  60. conn = JdbcUtil.getConnection();
  61. //准备sql
  62. String sql = "CALL pro_findById2(?,?)"; //第一个?是输入参数,第二个?是输出参数
  63.  
  64. //预编译
  65. stmt = conn.prepareCall(sql);
  66.  
  67. //设置输入参数
  68. stmt.setInt(1, 6);
  69. //设置输出参数(注册输出参数)
  70. /**
  71. * 参数一: 参数位置
  72. * 参数二: 存储过程中的输出参数的jdbc类型 VARCHAR(20)
  73. */
  74. stmt.registerOutParameter(2, java.sql.Types.VARCHAR);
  75.  
  76. //发送参数,执行
  77. stmt.executeQuery(); //结果不是返回到结果集中,而是返回到输出参数中
  78.  
  79. //得到输出参数的值
  80. /**
  81. * 索引值: 预编译sql中的输出参数的位置
  82. */
  83. String result = stmt.getString(2); //getXX方法专门用于获取存储过程中的输出参数
  84.  
  85. System.out.println(result);
  86.  
  87. } catch (Exception e) {
  88. e.printStackTrace();
  89. throw new RuntimeException(e);
  90. } finally {
  91. JdbcUtil.close(conn, stmt ,rs);
  92. }
  93. }
  94. }

CallableStatement执行存储过程的更多相关文章

  1. sql:CallableStatement执行存储过程

    /** * 使用CablleStatement调用存储过程 * @author APPle * */ public class Demo1 { /** * 调用带有输入参数的存储过程 * CALL p ...

  2. Java中执行存储过程和函数(web基础学习笔记十四)

    一.概述 如果想要执行存储过程,我们应该使用 CallableStatement 接口. CallableStatement 接口继承自PreparedStatement 接口.所以CallableS ...

  3. Java中执行存储过程和函数

    装载于:http://www.cnblogs.com/liunanjava/p/4261242.html 一.概述 如果想要执行存储过程,我们应该使用 CallableStatement 接口. Ca ...

  4. JDBC连接数据库中CallableStatement执行有参存储过程及注解其他

    Oracle的建有参存储过程的过程 procedure pro_01(v_01 in number,v_02 out varchar2) as begin select name into v_02 ...

  5. JAVA使用JDBC技术操作SqlServer数据库执行存储过程

    Java使用JDBC技术操作SqlServer数据库执行存储过程: 1.新建SQLSERVER数据库:java_conn_test 2.新建表:tb_User 3.分别新建三个存储过程: 1>带 ...

  6. 原生jdbc执行存储过程

    //定时任务,结转 . //表名 fys_sch_lvyou2 ,存储过程名:fys_sch_lvyou2_carrayover //无参调用:{call insertLine} //有参调用:{ca ...

  7. Hibernate如何执行存储过程?

    Hibernate如何执行存储过程? @Overridepublic Boolean setVarValue(final String processInstanceId, final String ...

  8. sqlserver学习2---java执行存储过程

    一.存储过程 1.新增操作存储过程 --------------1.新建 增加学生的存储过程---------------------------- set IDENTITY_INSERT stude ...

  9. Dapper完美兼容Oracle,执行存储过程,并返回结果集。

    Dapper完美兼容Oracle,执行存储过程,并返回结果集. 这个问题,困扰了我整整两天. 刚刚用到Dapper的时候,感觉非常牛掰.特别是配合.net 4.0新特性dynamic,让我生成泛型集合 ...

随机推荐

  1. POJ2115 C Looooops(数论)

    题目链接. 分析: 数论了解的还不算太多,解的时候,碰到了不小的麻烦. 设答案为x,n = (1<<k), 则 (A+C*x) % n == B 即 (A+C*x) ≡ B (mod n) ...

  2. HDU 1254 推箱子 BFS

    题目链接 http://acm.hdu.edu.cn/showproblem.php?pid=1254 题目分析: 做这道题,感觉挺简单的,做着做着就错了20次, 我也是醉了, WA到吐的节奏啊! 思 ...

  3. 《Linear Algebra and Its Applications》-chaper2-矩阵的逆

    矩阵的逆: 逆矩阵的定义: 类比于我们在研究实数的时候回去讨论一个数的倒数,对应的,在矩阵运算中,当AB = I的时候,A,B互称为逆矩阵,这里的I类似实数中的1,表示单位矩阵,即对角线是1其余位置是 ...

  4. motan源码分析六:客户端与服务器的通信层分析

    本章将分析motan的序列化和底层通信相关部分的代码. 1.在上一章中,有一个getrefers的操作,来获取所有服务器的引用,每个服务器的引用都是由DefaultRpcReferer来创建的 pub ...

  5. git commit error about 'vi'

    error: There was a problem with the editor 'vi'. Please supply the message using either -m or -F opt ...

  6. [Falcor] Intro to JSON Graph

    JSON is a very commonly used data interchange format. Unfortunately while most application domain mo ...

  7. UITableView显示不全

    先上图(不全图片): 正确图片: 原因例如以下: 1.在tableView的父视图的freme问题. 2.tableView本身的frame问题.大小依据自己的实际情况改过来就OK了 希望能够帮助到你 ...

  8. Apache配置HTTPS协议搭载SSl配置全过程

    1.首先要开启相应的扩展和辅助的dll(ssleay32.dll,libeay32.dll)到system32下 2.生成服务器证书 安装好在bin目录下有一个openssl.exe文件,用来生成证书 ...

  9. CString与std::string unicode下相互转化

      1. CString to string CString str = L"test"; CString stra(str.GetBuffer(0)); str.ReleaseB ...

  10. 《AngularJS》--指令的相互调用

    转载自http://blog.csdn.net/zhoukun1008/article/details/51296692 人们喜欢AngularJS,因为他很有特色,其中他的指令和双向数据绑定很吸引着 ...