用JDBC怎么调用存储过程?

存储过程,相当于数据库中的函数或方法。 
现举例来说明使用JDBC调用存储过程。

  • 编写存储过程(参看mysql文档)

    delimiter $$	
    					接收一个输入参数
    	create procedure demoSp(in inputParam varchar(255), inout inOutParam varchar(255))
    	begin       在传进来的字符串前加上zyxw---,然后将结果into到第二个参数
    		select concat('zyxw---', inputParam) into inOutParam;
    	end $$
    
    delimiter ;
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
  • 得到CallableStatement,并调用存储过程

    public class Demo5 {
    
        // 调用存储过程
        public static void main(String[] args) throws SQLException {
    
            Connection conn = null;
            CallableStatement st = null;
            ResultSet rs = null;
    
            try {
                conn = JdbcUtils.getConnection();
                // 得到CallableStatement,并调用存储过程
                st = conn.prepareCall("call demoSp(?,?)");
                // 设置参数,注册返回值,得到输出
                st.setString(1, "叶磊磊");
                st.registerOutParameter(2, Types.VARCHAR); // 告诉MySQL驱动输出的是什么类型,即数据库的类型,Types类中有所有数据库的常见类型 
                st.execute();
                System.out.println(st.getString(2));
    
            } finally {
                JdbcUtils.release(conn, st, rs);//用完记得释放链接
            }
        }
    
    }
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25

    运行结果为:zyxw---叶磊磊

学了存储过程,将来对数据进行处理就有2种选择了。

  1. 在数据库里面写存储过程,对数据进行处理,然后在java程序里面直接调用存储过程,获取到处理完后的数据,直接显示即可。
  2. 不在数据库里面写存储过程,通过JDBC获取数据库中的数据,获取到了之后拿到程序里面写方法来处理,处理完后再显示。

什么情况下我们需要在数据库里面写存储过程来处理数据呢? 

答:银行的数据处理一般用存储过程来实现。银行那些业务都是写好存储过程后给你,你去调用存储过程即可。在金融证劵领域用到的特别多,金融证劵领域的开发是不会用Hibernate框架,因为表结构不会对开发人员公开。

博客转载于:https://blog.csdn.net/yerenyuan_pku/article/details/52304479

你可能感兴趣的:(SQL面试题)