• JDBC 调用存储过程代码示例


    曾经有过一个两层构架的时代,前台就是界面,后台就是存储过程,存储过程把业务逻辑和数据操作一手包办了。

    用存储过程写东西比较复杂,大部分Java程序员或许都对此不太了解,因为我们如今的三层架构使用高级语言来充当中间的业务逻辑层。但是这种东西关键时候还是很有用的,下面是一个简单例子:

     

    DELIMITER $$  #分隔符重新定义

    DROP PROCEDURE IF EXISTS `world`.`addUser`$$ /* 如果存储过程存在就将其删掉 */
    CREATE PROCEDURE `world`.`addUser` (in pname varchar(45), in birthday date,in money float,out pid int)
    BEGIN
        insert into user(name,birthday,money)values(pname,birthday,money);
        #last_insert_id()是MySql自带的系统方法,可以将当前线程最后一次插入的数据的id拿出来
        select last_insert_id() into pid;

    END $$

    DELIMITER ;

     

    下面的代码调用该存储过程

     

     

    public class PsTest {

        /**
         * @param args
         * @throws SQLException
         */
        public static void main(String[] args) throws SQLException {
            ps();
        }

        static void ps() throws SQLException {
            Connection conn = null;
            CallableStatement cs = null;//存储过程需要使用的statement继承自PreparedStatement
            ResultSet rs = null;
            try {
                // 2.建立连接
                conn = JdbcUtils.getConnection();
                // conn = JdbcUtilsSing.getInstance().getConnection();
                // 3.创建语句

                String sql = "{ call addUser(?,?,?,?) } ";//调用名为addUser的存储过程
                cs = conn.prepareCall(sql);
                cs.registerOutParameter(4, Types.INTEGER);//注册输出参数的位置和类型
                cs.setString(1, "ps name");
                cs.setDate(2, new java.sql.Date(System.currentTimeMillis()));
                cs.setFloat(3, 100f);

                cs.executeUpdate();

                int id = cs.getInt(4);

                System.out.println("id=" + id);
            } finally {
                JdbcUtils.free(rs, cs, conn);
            }
        }

    }

  • 相关阅读:
    韩信点兵 中国剩余定理
    A -- A. Quailty and Playing Cards 模拟 + 思考
    HDU 5904 LCIS DP
    Ubuntu上的android sdk提示 bash: ......sdk/platform-tools/adb或者emulator: 没有那个文件或目录 解决笔记
    重学数据结构系列之——平衡树之SB Tree(Size Blanced Tree)
    重学数据结构系列之——二叉排序树
    重学数据结构系列之——二叉树基础
    重学数据结构系列之——哈希表
    如何判断出栈序列合理性
    重学数据结构系列之——栈
  • 原文地址:https://www.cnblogs.com/flying607/p/3461548.html
Copyright © 2020-2023  润新知