首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 相關知識

JDBC 呼叫 MySQL 5.1 儲存程序完整範例:IN/OUT 參數綁定與 last_insert_id 取回

     編輯:Java 相關知識

完整示範 MySQL 儲存程序建立與 JDBC CallableStatement 調用流程,包含輸入參數設定、輸出參數註冊、執行更新並取回自動遞增 ID。

環境

  • MySQL 5.1
  • mysql-connector-java-5.1.10
  • JDK 1.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 調用代碼

public static void testExeProcedure() {
  Connection conn = DBToolkit.getConnection();
  String sql = "{call testprocedure (?,?,?)}";
  try {
    CallableStatement cstmt = conn.prepareCall(sql);
    cstmt.setString(1, "wangwu");
    cstmt.setString(2, "111111");
    cstmt.registerOutParameter(3, Types.BIGINT); // 註冊 OUT 參數
    cstmt.executeUpdate();
    Long id = cstmt.getLong(3); // 或 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

參考資源

MySQL 儲存程序寫法參考:https://www.blogjava.net/sxyx2008/archive/2009/11/24/303497.html

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved