SharedSchoolSpace/作业/数据库系统原理与实践-朱丹丹/实践作业/第八次作业/Question11.java

69 lines
2.3 KiB
Java
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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!");
}
}