在MySQL存储过程的学习(一)(二)中初步实现了存储过程的编写,那么接下来是在程序中对存储过程的调用,存储过程是由(二)中的proc_demo
这里将采用Java JDBC的方式来实现对存储过程的调用
Java中调用存储过程需要用到java.sql.CallableStatement这个接口,通过java.sql.Connection获取
下面看代码:
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Types;
public class ProcedureDemo {
private Connection connection;
private java.sql.CallableStatement callableStatement;
private java.sql.ResultSet resultSet;
public Connection getConnection(){
try {
Class.forName("com.mysql.jdbc.Driver");
connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/mbcsystem","root","xiang");
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}
return connection;
}
public void excuteProcedure(){
try {
// 通过Connection调用存储过程
callableStatement = this.getConnection().prepareCall("{CALL proc_demo(?, ?)}");
// 设置存储过程传入参数
callableStatement.setInt(1, 11);
// 设置存储过程传出参数
callableStatement.registerOutParameter(2, Types.INTEGER);
// 执行存储过程并返回结果集
resultSet = callableStatement.executeQuery();
//遍历结果集并输出
while(resultSet.next()){ // 如果存在结果的情况
System.out.println( resultSet.getInt(1) );
}
} catch (SQLException e) {
e.printStackTrace();
} finally{
if(callableStatement != null){
try {
callableStatement.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if(connection != null){
try {
connection.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
}
代码不规范之处多多见谅,主要用来看使用JDBC来执行存储过程!