存储过程(一)后台使用jdbc集成

来源:互联网 发布:javascript的面相对象 编辑:程序博客网 时间:2024/06/13 18:13

刚开始使用的jdbc集成的,mybatis集成相对非常简单,这里记录一下

一、main方法
Class.forName("com.mysql.jdbc.Driver") ;
Connection con=DriverManager.getConnection("jdbc:mysql://localhost:3306/test", "root", "admin");

CallableStatement call = con.prepareCall("{call res(?,?)}");  //连接存储过程,第一个是输入参数,第二个输出参数

call.setInt(1, 10);//1是占位符的顺序,10是用户输入的参数

call.registerOutParameter(2, Types.INTEGER);//第二个是输出参数,输出的格式是Integer

call.execute();   //执行

int i=call.getInt(2);//占位符赋值

system.print(i);//输出

二、sql语句
定义参数:in age int,out c int  //注意这里,如果是java里面要用到out参数,那么定义的时候不能加引号,navicat自动生成引号的
主体:
BEGIN
DECLARE v1 int;    //定义参数,局部都要使用的变量
set v1=age;            //输入参数赋值到局部变量

insert into product(age) values(v1);//语句

select count(*) from product into c;//into c 就是给输出参数赋值
END
eg:后来就不用这么麻烦了,上面是刚学的时候为了区分变量
insert into product(age) values(_age);  //_age就是in参数
set _count=1;   //_count 是out参数,直接赋值就可以了
select _count;  //存储过程测试用,结果集会显示,如果是java用,那么上一步的set就可以得到_count了

三、输出集合 lis
begin
select * from product
end

没有参数

main方法:
String sql="{call lis()}";
            CallableStatement call=con.prepareCall(sql);
            boolean list=call.execute();
            while(list){    //第一个循环是总体的循环
                ResultSet rs=call.getResultSet();
                while(rs.next()){  //第二个循环是rs的循环
                    int id=rs.getInt(1);
                    String name=rs.getString(2);
                    int age=rs.getInt(3);
                    //System.out.println(id+"\t"+name+"\t"+age);
                }
                list =call.getMoreResults();
            }  


0 0
原创粉丝点击