Java调用Mysql存储过程
import java.sql.CallableStatement;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Types;
public class ProcedureDemo {
// 调用mysql的存储过程
// 演示JDBC操作MySQL存储过程
public static void main(String[] args) {
Connection conn = null;
//调用存储过程专用的接口
CallableStatement cstmt = null;
ResultSet rs = null;
String url = "jdbc:mysql://localhost:3306/mydb2?user=root&password=123456";
try {
Class.forName("com.mysql.jdbc.Driver");
conn = DriverManager.getConnection(url);
//存储过程特定的语法
String sql = "{call add_pro(?,?,?)}";
cstmt = conn.prepareCall(sql );
// 绑三个参数(前二个是输入,后一个是输出) cstmt.setInt(1, 100); cstmt.setInt(2, 200); // //注册一个输出参数, //其中Types.INTEGER表示SQL与JDBC之前的是映射类型 cstmt.registerOutParameter(3,Types.INTEGER); //调用存储过程 boolean i = cstmt.execute(); System.out.println("flag : "+i); //取得执行结果 int sum = cstmt.getInt(3); System.out.println("sum : "+sum); } catch (ClassNotFoundException e) { e.printStackTrace(); } catch (SQLException e) { e.printStackTrace(); }finally{ try { if(rs!=null) rs.close(); } catch (SQLException e) { e.printStackTrace(); } try { if(cstmt!=null) cstmt.close(); } catch (SQLException e) { e.printStackTrace(); } try { if(conn!=null) conn.close(); } catch (SQLException e) { e.printStackTrace(); } } } }
执行结果:
flag : false
sum : 300
注意: 先要在mysql中执行delimiter // 将mysql定界符转成//
然后在mysql中创建存储过程
create procedure add_pro(a int,b int , out sum int)
begin
set sum = a + b;
end;
by hacket

浙公网安备 33010602011771号