• JDBC调用函数,存储过程


    JDBC调用函数,存储过程

     /**
         * 如何使用JDBC调用存储在数据库中的函数或存储过程
         */
        @Test
        public void testCallableStatement(){
            Connection connection = null;
            CallableStatement callableStatement = null;
    
            try {
    
                connection = Methods.getConnection();
                //1.通过Connecton对象的prepareCall()
                //方法创建一个CallableStatement对象的实例,
                //在使用Connection对象的preparedCall()方法时,
                //需要传入一个String类型的字符串,该字符串用于指明如何调用存储过程
                //procedure-name:函数名
                //arg:函数的参数
                String sql = "{?=call <procedure-name>[(<arg1>,<arg2>,...)]}";
                callableStatement = connection.prepareCall(sql);
    
                //2.通过CallableStatement对象的
                //reisterOutParamter()方法注册OUT参数
                callableStatement.registerOutParameter(1, Types.NUMERIC);
                callableStatement.registerOutParameter(3, Types.NUMERIC);
    
                //3.通过CallableStatement对象的setXxx()方法设定IN或IN OUT参数的值
                //null 可以使用setNull()方法
                callableStatement.setInt(2,80);
    
                //4.通过CallableStatement 对象execute()方法执行存储过程
                callableStatement.execute();
    
                //5.如果所谓用的是带返回参数的存储过程
                //还需要通过CallableStatement对象的getXxx()方法获取其返回值
                double sumSalary = callableStatement.getDouble(1);
                long empCount = callableStatement.getLong(3);
    
            } catch (Exception e) {
                e.printStackTrace();
            } finally {
                Methods.release(null,connection,null);
            }
    
        }
    

      

  • 相关阅读:
    说说与线程相关的方法
    sleep()和yield()有什么区别?
    同步和异步有何异同,分别在什么情况下使用?
    如何保证多个线程同时启动?
    volatile关键字能否保证线程安全?
    使用对象的wait()方法需要注意什么?
    乐观锁与悲观锁是什么?
    Condition实现等待、唤醒
    LongAdder与AtomicLong有什么区别?
    介绍一下ForkJoinPool的使用
  • 原文地址:https://www.cnblogs.com/yangHS/p/10847822.html
Copyright © 2020-2023  润新知