import java.sql.*; public class Question11 { // MySQL 8.0 以上版本 - JDBC 驱动名及数据库 URL static final String JDBC_DRIVER = "com.mysql.cj.jdbc.Driver"; static final String DB_URL = "jdbc:mysql://公网IP:3306/user000db?useSSL=false&allowPublicKeyRetrieval=true&serverTimezone=UTC"; // 数据库的用户名与密码,需要根据自己的设置 static final String USER = "DB_USER000"; static final String PASS = "DB_USER000@123"; public static void main(String[] args) { Connection conn = null; Statement stmt = null; try{ // 注册 JDBC 驱动 Class.forName(JDBC_DRIVER); // 打开链接 System.out.println("连接数据库..."); conn = DriverManager.getConnection(DB_URL,USER,PASS); // 执行查询 System.out.println("实例化Statement对象..."); stmt = conn.createStatement(); Boolean rs = stmt.execute("drop procedure if exists demoSp;"); rs = stmt.execute("create procedure demoSp(inout test int) begin set test = test + 1; end"); CallableStatement cs = conn.prepareCall("{call demoSp(?)}"); System.out.println("调用存储过程,作用为将输入的变量+1:"); int res = 0; System.out.println("输入变量:"); System.out.println(res); cs.setInt(1, res); cs.registerOutParameter(1, Types.INTEGER); cs.execute(); res = cs.getInt(1); System.out.println("调用结果:"); System.out.println(res); // 完成后关闭 cs.close(); stmt.close(); conn.close(); }catch(SQLException se){ // 处理 JDBC 错误 se.printStackTrace(); }catch(Exception e){ // 处理 Class.forName 错误 e.printStackTrace(); }finally{ // 关闭资源 try{ if(stmt!=null) stmt.close(); }catch(SQLException se2){ }// 什么都不做 try{ if(conn!=null) conn.close(); }catch(SQLException se){ se.printStackTrace(); } } System.out.println("Goodbye!"); } }