zoukankan      html  css  js  c++  java
  • JDBC学习笔记(10)——调用函数&存储过程

    如何使用JDBC调用存储在数据库中的函数或存储过程:

    * 1.通过COnnection对象的prepareCall()方法创建一个CallableStatement
    *    对象的实例,在使用Connection对象的prepareCall() 方法时,需要传入一个String类型的字符串,
    *    该字符串用于指明如何调用存储过程

    * 2.通过CallableStatement对象的registerOutParameter() 方法注册Out参数

    * 3.通过CallableStatement对象的setXxx()方法设定IN或In out
    *    参数,若想将参数设为null,可以使用setNUll()

    * 4.通过CallableStatement对象的execute()方法执行存储过程

    * 5.如果所调用的是带返回参数的存储过程没还需要通过CallableStatement对象的getXxx()函数进行获取

    具体的代码实现:

     1     @Test
     2     public void testCallableStatement() {
     3         Connection connection = null;
     4         /**
     5          * 调用存储函数 1.{?= call <procedure-name>[(<arg1>,<arg2>, ...)]} 
     6          * 调用存储过程 2.{call <procedure-name>[(<arg1>,<arg2>, ...)]}
     7          */
     8         // 调用存储函数和调用存储过程,一个sql语句的区别
     9         String sql = "{?= call <procedure-name>[(<arg1>,<arg2>, ...)]}";
    10         CallableStatement callableStatement = null;
    11         try {
    12 
    13             connection = JDBCTools.getConnection();
    14             /*
    15              * 1.通过COnnection对象的prepareCall()方法创建一个CallableStatement
    16              * 对象的实例,在使用Connection对象的prepareCall() 方法时,需要传入一个String类型的字符串,
    17              * 该字符串用于指明如何调用存储过程
    18              */
    19             callableStatement = connection.prepareCall(sql);
    20 
    21             /*
    22              * 2.通过CallableStatement对象的registerOutParameter() 方法注册Out参数
    23              */
    24             callableStatement.registerOutParameter(1, Types.NUMERIC);
    25             callableStatement.registerOutParameter(3, Types.NUMERIC);
    26 
    27             /*
    28              * 3.通过CallableStatement对象的setXxx()方法设定IN或In out
    29              * 参数,若想将参数设为null,可以使用setNUll()
    30              */
    31             callableStatement.setInt(2, 80);
    32 
    33             /* 4.通过CallableStatement对象的execute()方法执行存储过程 */
    34             callableStatement.execute();
    35 
    36             /*
    37              * 5.如果所调用的是带返回参数的存储过程没还需要通过CallableStatement对象的getXxx()
    38              */
    39             double sumSalary = callableStatement.getDouble(1);
    40             long empCount = callableStatement.getLong(3);
    41         } catch (Exception e) {
    42             e.printStackTrace();
    43         } finally {
    44             JDBCTools.release(null, callableStatement, connection);
    45         }
    46     }

    调用函数和存储过程的sql语句的区别:

    * 调用存储函数 1.{?= call <procedure-name>[(<arg1>,<arg2>, ...)]}
    * 调用存储过程 2.{call <procedure-name>[(<arg1>,<arg2>, ...)]}

    这个知识点暂时没用到,先做下笔记,待以后用到以后再深入研究,JDBC的学习暂时告一段落,开启新的学习征程!


    个人感悟:把简单的事情做到极致,打扎实的基础,写优秀的代码

    本文为博主原创文章,转载请注明出处:http://www.cnblogs.com/ysw-go/
    1、本博客的原创原创文章,都是本人平时学习所做的笔记,如有错误,欢迎指正。
    2、如有侵犯您的知识产权和版权问题,请通知本人,本人会即时做出处理文章。
    3、本博客的目的是知识交流所用,转载自其它博客或网站,作为自己的参考资料的,感谢这些文章的原创人员

  • 相关阅读:
    关于在MAC上进行 LARAVEL 环境 Homestead 安装过程记录
    js 贷款计算器
    js 实现阶乘
    js 两点间距离函数
    composer Your requirements could not be resolved to an installable set of packages
    vue 项目优化记录 持续更新...
    vue 项目打包
    vue 真机调试页面出现空白
    vue 真机调试
    谈谈-Android状态栏的编辑
  • 原文地址:https://www.cnblogs.com/ysw-go/p/5480675.html
Copyright © 2011-2022 走看看