zoukankan      html  css  js  c++  java
  • 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);
            }
        }

    }

  • 相关阅读:
    d3.js--04(enter和exit)
    d3.js--03(增删改查)
    d3.js--02(data和datum原理)
    css文件和js文件后面带一个问号----2015-1103
    json_decode()和json_encode()区别----2015-0929
    随记--更新于20150925
    个人火狐插件汇总--20150924
    『jQuery』.html(),.text()和.val()的概述及使用--2015-08-11
    矩阵求导
    傅里叶变换
  • 原文地址:https://www.cnblogs.com/flying607/p/3461548.html
Copyright © 2011-2022 走看看