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、本博客的目的是知识交流所用,转载自其它博客或网站,作为自己的参考资料的,感谢这些文章的原创人员

  • 相关阅读:
    less css用法思维导图
    javascript模块化编程规范
    行高:line-height图文解析
    CSS细节
    Emmet
    常见的浏览器兼容问题
    一条在没有水的环境下坚持了四年生存下来的鱼
    纪念:一高那些年
    水墨青花
    float浮动
  • 原文地址:https://www.cnblogs.com/ysw-go/p/5480675.html
Copyright © 2011-2022 走看看