Java学习者论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

手机号码,快捷登录

恭喜Java学习者论坛(https://www.javaxxz.com)已经为数万Java学习者服务超过8年了!积累会员资料超过10000G+
成为本站VIP会员,下载本站10000G+会员资源,购买链接:点击进入购买VIP会员
JAVA高级面试进阶视频教程Java架构师系统进阶VIP课程

分布式高可用全栈开发微服务教程

Go语言视频零基础入门到精通

Java架构师3期(课件+源码)

Java开发全终端实战租房项目视频教程

SpringBoot2.X入门到高级使用教程

大数据培训第六期全套视频教程

深度学习(CNN RNN GAN)算法原理

Java亿级流量电商系统视频教程

互联网架构师视频教程

年薪50万Spark2.0从入门到精通

年薪50万!人工智能学习路线教程

年薪50万!大数据从入门到精通学习路线年薪50万!机器学习入门到精通视频教程
仿小米商城类app和小程序视频教程深度学习数据分析基础到实战最新黑马javaEE2.1就业课程从 0到JVM实战高手教程 MySQL入门到精通教程
查看: 388|回复: 0

[JDBC学习]JDBC调用MySQL5的存储过程

[复制链接]
  • TA的每日心情
    开心
    2021-3-12 23:18
  • 签到天数: 2 天

    [LV.1]初来乍到

    发表于 2014-10-11 04:13:14 | 显示全部楼层 |阅读模式
    JDBC调用MySQL5存储过程
       
       
         
       
       
        JDBC调用MySQL5存储过程,过程有入参和出参,执行存储过程,并获取出参。
       
       
         
       
       
        一、环境
       
       
       
       
       
        MySQL5.1
       
       
        mysql-connector-java-5.1.10
       
       
        jdk1.5
       
       
         
       
       
        表
       
       
       
         create
         table
         
         user (   
         
             id
         int(11)
         not
         null auto_increment,   
         
             
         name
         varchar(50)
         not
         null,   
         
             pswd
         varchar(50)
         default
         null,   
         
             pic longblob,   
         
             remark longtext,   
         
             
         primary
         key (id)   
         
    );
         
       
       
         
       
       
         
       
       
        二、写存储过程
       
       
         
       
       
        DELIMITER $$
       

       

        DROP
        PROCEDURE
        IF
        EXISTS testprocedure $$
       

        CREATE DEFINER=`vcom`@`%`
        PROCEDURE testprocedure(
        in in_name
        varchar(20),
        in in_pswd
        varchar(20),out out_id
        bigint)
       

        BEGIN
       
         
        insert
        into
       
        user(
        name,pswd)
        values(in_name,in_pswd);
       
         
        select last_insert_id()
        into out_id;
       

        END $$
       

       
    DELIMITER ;
       
       
         
       
       
        三、JDBC调用存储过程
       
       
         
       
       
       
         import lavasoft.common.DBToolkit;
         

         

         import java.sql.CallableStatement;
         

         import java.sql.Connection;
         

         import java.sql.SQLException;
         

         import java.sql.Types;
         

         

         /**
    * JDBC调用MySQL5存储过程
    *
    * @author leizhimin 2009-12-4 10:33:12
    */
         

         public
         class ProcedureTest {
         
             
         public
         static
         void main(String[] args) {
         
                     testExeProcedure();
         
             }
         

         
             
         public
         static
         void testExeProcedure() {
         
                     Connection conn = DBToolkit.getConnection();
         
                     
         //创建调用存储过程的预定义SQL语句
         
                     String sql =
         "{call testprocedure(?,?,?)}";
         
                     
         try {
         
                            
         //创建过程执行器
         
                             CallableStatement cstmt = conn.prepareCall(sql);
         
                            
         //设置入参和出参
         
                             cstmt.setString(1,
         "wangwu");
         
                             cstmt.setString(2,
         "111111");
         
                             cstmt.registerOutParameter(3, Types.BIGINT);
         //注册出参
         
                             cstmt.executeUpdate();
         
                            
         //获取输出参数值(两种方式都行)
         
                             Long id = cstmt.getLong(3);
         
                            
         //Long id = cstmt.getLong("out_id");
         
                             System.out.println(
         "本次插入数据的id=" + id);
         
                     }
         catch (SQLException e) {
         
                             e.printStackTrace();
         
                     }
         finally {
         
                             DBToolkit.closeConnection(conn);
         
                     }
         
             }
         
    }
         
       
       
         
       
       
        运行后,控制台:
       
       
         
         
          本次插入数据的id=1
          

          
    Process finished
          with
          exit code 0
          
         
       
       
         
       
       
        Java调用存储过程很容易,但是开发存储过程比较困难,我也基本上没写过MySQL的存储过程,写上面的存储过程参看了下面一篇博文:
       
       
        http://www.blogjava.net/sxyx2008/archive/2009/11/24/303497.html
        本文出自 “熔 岩” 博客,请务必保留此出处http://lavasoft.blog.51cto.com/62575/238613
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|手机版|Java学习者论坛 ( 声明:本站资料整理自互联网,用于Java学习者交流学习使用,对资料版权不负任何法律责任,若有侵权请及时联系客服屏蔽删除 )

    GMT+8, 2025-2-26 06:53 , Processed in 0.366657 second(s), 46 queries .

    Powered by Discuz! X3.4

    © 2001-2017 Comsenz Inc.

    快速回复 返回顶部 返回列表