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

用存储过程写东西比较复杂,大部分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);
        }
    }

}

JDBC 调用存储过程代码示例的更多相关文章

  1. Java数据库连接——JDBC调用存储过程,事务管理和高级应用

    一.JDBC常用的API深入详解及存储过程的调用 相关链接:Jdbc调用存储过程 1.存储过程(Stored Procedure)的介绍 我们常用的操作数据库语言SQL语句在执行的时候需要先编译,然后 ...

  2. Java数据库连接--JDBC调用存储过程,事务管理和高级应用

    相关链接:Jdbc调用存储过程 一.JDBC常用的API深入详解及存储过程的调用 1.存储过程的介绍 我们常用的操作数据库语言SQL语句在执行的时候要先进行编译,然后执行,而存储过程是在大型数据库系统 ...

  3. JDBC(13)—JDBC调用存储过程和函数

    步骤: JDBC调用存储过程和函数 步骤: ①:通过Connection对象的prepareCall()方法创建一个CallableStatement对象的实例,在使用Connection对象的pre ...

  4. Java JDBC调用存储过程:无参、输入带参、输出及输出带参

    Java JDBC调用存储过程:无参.输入带参.输出及输出带参 示例代码: package xzg; import java.sql.CallableStatement; import java.sq ...

  5. JDBC调用存储过程

    一. JDBC调用存储过程 (1)使用存储过程SQL编写的程序代码,等一段语句和控制流语句.在创建时被编译成机器代码和存储在数据库中的client转让. 存储过程具有以下优势: 1.所生成的机器代码被 ...

  6. JDBC调用存储过程的例子

    下面是我学到了Oracle存储过程,在这里跟大家简单的分享一下利用JDBC调用存储过程的例子: 废话就不啰嗦,现在就直接上机代码. 首先我利用的是Oracle中默认的 scott 数据库里的 emp员 ...

  7. JDBC调用存储过程,进参出参

    今天做了一个数据表拷贝的功能,用到了存储过程,就写了一个java中用jdbc调用存储过程的代码,成功的实现了功能,晚上跑回家记录下 Connection conn = ConnectionUtil.g ...

  8. jdbc调用存储过程获取多个结果集

    jdbc调用存储过程获取多个结果集 2017年07月26日 21:20:22 Kenny-Liu 阅读数:1486 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.cs ...

  9. java——jdbc调用存储过程

    1,加载驱动: 2,获取连接 3,设置参数 4,执行: 5,释放连接 普通jdbc的执行过程: conn.prepareCall() 上面是一个调用存储过程的示例.

随机推荐

  1. Java创建线程的三种主要方式

    Java创建线程的主要方式 一.继承Thread类创建 通过继承Thread并且重写其run(),run方法中即线程执行任务.创建后的子类通过调用 start() 方法即可执行线程方法. 通过继承Th ...

  2. bzoj 3595

    Splay 每个节点维护一个区间. /************************************************************** Problem: 3595 User ...

  3. iOS Core Animation 动画 入门学习(一)基础

    reference:https://developer.apple.com/library/ios/documentation/Cocoa/Conceptual/CoreAnimation_guide ...

  4. 2015 UESTC 搜索专题N题 韩爷的梦 hash

    韩爷的梦 Time Limit: 20 Sec  Memory Limit: 256 MB 题目连接 http://acm.uestc.edu.cn/#/contest/show/61 Descrip ...

  5. 使用STL中的list容器实现单链表的操作

    #include<iostream> #include<list> #include<algorithm> using namespace std; void Pr ...

  6. ida sdk add_struc_member array

    tid_t tid = get_struc_id ( "foo_type" ) ; struc_t * sptr = get_struc ( tid ); if ( sptr == ...

  7. TCP/IP具体解释--TCP/UDP优化设置总结&amp; MTU的相关介绍

    首先要看TCP/IP协议,涉及到四层:链路层,网络层.传输层,应用层. 当中以太网(Ethernet)的数据帧在链路层 IP包在网络层 TCP或UDP包在传输层 TCP或UDP中的数据(Data)在应 ...

  8. 如何从MATLAB里面保存出分辨率高的图形

    MATLAB堪称科技工作者的倚天屠龙,其科学计算,简洁的编程风格,友好的图形界面等等,都使得它颇受欢迎.MATLAB作图相当简单,而且美观,但是,缺点是分辨率低,一直没有发现,直到最近一期刊编辑告诉我 ...

  9. mac活动监视器 的含义

    应用内存:应用所使用的内存数量. 联动内存:系统运行需要的内存.联动内存不能缓存且必须存放在内存中,所以不能被其他应用使用. 压缩:为腾出更多内存而压缩的内存数量.当电脑接近其最大内存能力时,内存中的 ...

  10. 浏览器自动化测试初探 - 使用phantomjs与casperjs

    收录待用,修改转载已取得腾讯云授权 作者:yangchunwen 首先要解释一下为什么叫浏览器自动化测试,因为本文只关注发布后页面功能的自动化测试,也就是UI层面的自动化. 浏览器测试有别于js代码的 ...