zoukankan      html  css  js  c++  java
  • MySQL存储过程以及Java调用ca'llablestatment

    1、创建存储过程SQL语句

    #创建存储过程
    create procedure mysql_add(in x1 int,in x2 int , out y int)
    	begin 
    		set y := x1 + x2;
    	end
    #调用存储过程
    call mysql_add(2,3,@y)
    #查询结果
    select @y;
    #查询所有的存储过程
    show procedure status;

    1.1、Java调用存储过程

    @org.junit.Test
        public void testcallablestatement() throws Exception {
            long start = System.currentTimeMillis();
            //创建连接
            String driverClass = "com.mysql.jdbc.Driver";
            String url = "jdbc:mysql://localhost:3306/mysql_jdbc";
            String username = "root";
            String password = "root";
            Class.forName(driverClass);
            Connection con = DriverManager.getConnection(url, username, password);
            //关闭自动提交
            con.setAutoCommit(false);
            //调用存储过程
            CallableStatement cst = con.prepareCall("{call mysql_add(?,?,?)}");
            //设置输入参数
            cst.setInt(1,2);
            cst.setInt(2,4);
            //设置输出参数
            cst.registerOutParameter(3,Types.INTEGER);
            //执行存储过程
            cst.execute();
            //获取返回结果
            int result = cst.getInt(3);
            System.out.println(result);
            //提交
            con.commit();
    
            cst.close();
            con.close();
            long time = System.currentTimeMillis() - start;
            System.out.println(time);//5351
        }

    2、利用存储过程向表中插入数据

    #创建百万数据插入过程
    create procedure procedure_insert(in n int)
    	begin 
    	declare id int;
    	declare name varchar(20);
    	declare age int;
    	declare i int default 0;
    		while i < n do 
    			set id := i;
    			set name := concat('tome',i);
    			set age := i % 100;
    			insert into student (id,name,age) values (id,name,age);
    			set i := i + 1;
    			end while;
    	END
    #调用插入数据的存储过程
    call procedure_insert(100)
    

    2.1、Java调用存储过程

        @org.junit.Test
        public void testprocedure_insert() throws Exception {
            long start = System.currentTimeMillis();
            //创建连接
            String driverClass = "com.mysql.jdbc.Driver";
            String url = "jdbc:mysql://localhost:3306/mysql_jdbc";
            String username = "root";
            String password = "root";
            Class.forName(driverClass);
            Connection con = DriverManager.getConnection(url, username, password);
            //关闭自动提交
            con.setAutoCommit(false);
            //调用存储过程
            CallableStatement cst = con.prepareCall("{call procedure_insert(?)}");
            //设置输入参数
            cst.setInt(1,100000);
            //执行存储过程
            cst.execute();
            //提交
            con.commit();
            cst.close();
            con.close();
            long time = System.currentTimeMillis() - start;
            System.out.println(time);//2085
        }
    


    欢迎关注我的公众号:小秋的博客 CSDN博客:https://blog.csdn.net/xiaoqiu_cr github:https://github.com/crr121 联系邮箱:rongchen633@gmail.com 有什么问题可以给我留言噢~
  • 相关阅读:
    基于Visual C++2013拆解世界五百强面试题--题9-找出所有的排列方式
    基于Visual C++2013拆解世界五百强面试题--题8-数组的排序和查找
    基于Visual C++2013拆解世界五百强面试题--题7-链表的各种操作
    宣布在 Azure 镜像库中正式推出 Windows Server 2012 R2 并降低 Windows Azure 的实例定价
    基于Visual C++2013拆解世界五百强面试题--题6-double类型逆序
    基于Visual C++2013拆解世界五百强面试题--题5-自己实现strstr
    Paging
    Swapping
    Partitioning
    Stationary point
  • 原文地址:https://www.cnblogs.com/flyingcr/p/10326904.html
Copyright © 2011-2022 走看看