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调用存储过程很容易,但是开发存储过程比较困难。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
JDBC 是Java连接数据库的标准接口,可以使用它来调用 MySQL 中的存储过程。下面是一个简单的示例代码,演示如何使用 JDBC 调用 MySQL 存储过程。 1. 首先,需要创建一个连接到 MySQL 数据库的 JDBC 连接对象: ``` String url = "jdbc:mysql://localhost:3306/mydatabase"; String user = "myuser"; String password = "mypassword"; Connection conn = DriverManager.getConnection(url, user, password); ``` 2. 然后,需要使用这个连接对象创建一个 CallableStatement 对象,该对象用于调用存储过程: ``` String call = "{ call my_stored_procedure(?, ?) }"; CallableStatement stmt = conn.prepareCall(call); ``` 3. 接下来,需要设置存储过程的参数,使用 setXXX() 方法设置参数的值: ``` stmt.setString(1, "parameter1"); stmt.setInt(2, 123); ``` 4. 调用 execute() 方法执行存储过程: ``` stmt.execute(); ``` 5. 最后,使用 getXXX() 方法获取存储过程执行后返回的结果: ``` ResultSet rs = stmt.getResultSet(); while (rs.next()) { // 处理结果集 } ``` 完整的示例代码: ``` String url = "jdbc:mysql://localhost:3306/mydatabase"; String user = "myuser"; String password = "mypassword"; Connection conn = DriverManager.getConnection(url, user, password); String call = "{ call my_stored_procedure(?, ?) }"; CallableStatement stmt = conn.prepareCall(call); stmt.setString(1, "parameter1"); stmt.setInt(2, 123); stmt.execute(); ResultSet rs = stmt.getResultSet(); while (rs.next()) { // 处理结果集 } rs.close(); stmt.close(); conn.close(); ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值