CallableStatement

在近年JDBC中,存储过程越来越边缘化,用的也好。即使在数据库中,存储过程也是很偏门的,仅作为了解。
下面是关于CallbaleStatement的源代码,为了展示方便,所有异常抛出而不处理

public class ProcDemo{
    // 定义MySQL的数据库驱动程序
    public static final String DBDRIVER = "org.gjt.mm.mysql.Driver" ;
    // 定义MySQL数据库的连接地址
    public static final String DBURL = "jdbc:mysql://localhost:3306/mldn" ;
    // MySQL数据库的连接用户名
    public static final String DBUSER = "root" ;
    // MySQL数据库的连接密码
    public static final String DBPASS = "mysqladmin" ;
    public static void main(String args[]) throws Exception{    // 所有异常抛出
        Connection conn = null ;        // 数据库连接
        CallableStatement cstmt = null ;        // 数据库操作
        String sql = "{CALL myproc(?,?,?)}" ;   // 调用过程
        Class.forName(DBDRIVER) ;   // 加载驱动程序
        conn = DriverManager.getConnection(DBURL,DBUSER,DBPASS) ;
        cstmt = conn.prepareCall(sql) ;
        cstmt.setInt(1,70) ;    // 设置第一个参数是70
        cstmt.setInt(2,80) ;    // 设置第二个参数是80
        cstmt.registerOutParameter(2,Types.INTEGER) ;
        cstmt.registerOutParameter(3,Types.INTEGER) ;
        cstmt.execute() ;       // 执行过程
        System.out.println("INOUT的返回值:" + cstmt.getInt(2)) ;
        System.out.println("OUT的返回值:" + cstmt.getInt(3)) ;
        cstmt.close() ;
        conn.close() ;          // 数据库关闭
    }
}

数据库的mysql存储过程的建立代码一并奉上。

CREATE PROCEDURE mypro(in p1 INT,INOUT p2 INT,OUT p3 INT)
BEGIN
SELECT p1,p2,p3;    -- 输出p1,p2,p3的内容
SET p1 = 10;
SET p2 = 20;
SET p3 = 30;

END

你可能感兴趣的:(CallableStatement)