zoukankan      html  css  js  c++  java
  • 事务--存储过程

    创建事务
    
    delimiter //
    
    CREATE PROCEDURE sp_count(OUT param INT)
    BEGIN 
        SELECT COUNT(*) INTO param FROM persons;
    END
    //
    package test;
    
    import java.sql.CallableStatement;
    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.SQLException;
    import java.sql.Types;
    
    import org.junit.Before;
    import org.junit.jupiter.api.Test;
    
    
    /**
    *@author :王团结
    *@version: 2019年6月20日上午10:48:28
    *类说明:
    */
    public class TestCallableStatement {
        private Connection conn;
        /**
         * 
         */
        @Before
        public void iniConn() {
            // 注册驱动程序、连接、时区一定要加上
            String url = "jdbc:mysql://localhost:3306/mybase?serverTimezone=UTC";
    
            String username = "root";
            String password = "18339401841";
    
            try {
                // 获得连接
                conn = DriverManager.getConnection(url, username, password);
    
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
        
        /**
         * select
         * @throws Exception 
         */
        @Test
        public void test1() throws Exception {
            iniConn();
            //输出
            String sql="{call sp_count(?)}";
            //创建
            CallableStatement cst=conn.prepareCall(sql);
            //注册输出参数
            cst.registerOutParameter(1, Types.INTEGER);
            //执行存储过程
            cst.execute();
            //取得输出的参数
            int id=cst.getInt(1);
            System.out.println(id);
        }
        /**
         * select
         * @throws Exception 
         */
        @Test
        public void sp_add() throws Exception {
            iniConn();
            //输出
            String sql="{call sp_add(?,?,?)}";
            //创建
            CallableStatement cst=conn.prepareCall(sql);
            
            //对于输入 参数需要绑定参数值
            cst.setInt(1, 2);
            cst.setInt(2, 2);
            //注册输出参数
            cst.registerOutParameter(3, Types.INTEGER);
            //执行存储过程
            cst.execute();
            //取得输出的参数
            int id=cst.getInt(3);
            System.out.println(id);
        }
        /**
         * select
         * @throws Exception 
         */
        @Test
        public void sp_subtract() throws Exception {
            iniConn();
            //输出
            String sql="{call sp_subtract(?,?)}";
            //创建
            CallableStatement cst=conn.prepareCall(sql);
            
            //对于输入 参数需要绑定参数值
            cst.setInt(1, 2);
            cst.setInt(2, 2);
            //注册输出参数
            cst.registerOutParameter(2, Types.INTEGER);
            //执行存储过程
            cst.execute();
            //取得输出的参数
            int id=cst.getInt(2);
            System.out.println(id);
        }
        /**
         * select
         * @throws Exception 
         */
        @Test
        public void sp_biginsert() throws Exception {
            iniConn();
            //输出
            String sql="{call sp_biginsert(?)}";
            //创建
            CallableStatement cst=conn.prepareCall(sql);
            
            //对于输入 参数需要绑定参数值
            cst.setInt(1, 100000);
            //执行存储过程
            cst.execute();
            //取得输出的参数
        }
        /**
         * 调用函数
         * SET GLOBAL log_bin_trust_function_creators = 1; 
         *CREATE FUNCTION f_sum(a INT,b int) RETURNS INT
         *RETURN a+b;
         * @throws Exception 
         */
        @Test
        public void f_sum() throws Exception {
            iniConn();
            //输出
            String sql="{?=call f_sum(?,?)}";
            //创建
            CallableStatement cst=conn.prepareCall(sql);
            cst.setInt(2, 100);
            cst.setInt(3, 200);
            cst.registerOutParameter(1, Types.INTEGER);
            
            //执行存储过程
            cst.execute();
            int res=cst.getInt(1);
            //取得输出的参数
            System.out.println(res);
        }
    }
  • 相关阅读:
    jetty服务器
    好久不用的正则表达式
    mysql技术调优资料整理
    .net互转java 转行必备
    docker学习资料整理(持续更新中..)
    tcpdump来抓取执行的sql语句
    DDoS deflate
    Linux网络相关查询脚本
    linux下无法删除文件的原因
    linux使用FIO测试磁盘的iops 【转载】
  • 原文地址:https://www.cnblogs.com/King-boy/p/11058686.html
Copyright © 2011-2022 走看看