存储过程,相当于数据库中的函数或方法。
现举例来说明使用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种选择了。
- 在数据库里面写存储过程,对数据进行处理,然后在java程序里面直接调用存储过程,获取到处理完后的数据,直接显示即可。
- 不在数据库里面写存储过程,通过JDBC获取数据库中的数据,获取到了之后拿到程序里面写方法来处理,处理完后再显示。
什么情况下我们需要在数据库里面写存储过程来处理数据呢?
答:银行的数据处理一般用存储过程来实现。银行那些业务都是写好存储过程后给你,你去调用存储过程即可。在金融证劵领域用到的特别多,金融证劵领域的开发是不会用Hibernate框架,因为表结构不会对开发人员公开。
博客转载于:https://blog.csdn.net/yerenyuan_pku/article/details/52304479