JDBC数据库编程:callableStatement接口

了解MySQL存储过程建立,

了解存储过程中参数传递的三种方式

了解callablestatement调用存储过程操作。

因为在现在开发中,使用存储过程的地方越来越少,所以,对于存储过程使用,只需要了解,不需要深入。

现在先建议一个存储过程;

CREATE PROCEDURE myproc
(
    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

IN类型:默认设置,什么都不声明,只是将内容传递过来。

INOUT类型:表示把值传递到过程中,并且保持过程对值的修改。

OUT:可以不传递内容,过程对此值的操作可以返回。

package 类集;
import java.sql.Connection ;
import java.sql.DriverManager ;
import java.sql.SQLException ;
import java.sql.CallableStatement ;
import java.sql.Types ;
public class ProcDemo{
    // 定义MySQL的数据库驱动程序
    public static final String DBDRIVER = "org.gjt.mm.mysql.Driver" ;
    // 定义MySQL数据库的连接地址
    public static final String DBURL = "jdbc:mysql://localhost:3306/sys" ;
    // MySQL数据库的连接用户名
    public static final String DBUSER = "root" ;
    // MySQL数据库的连接密码
    public static final String DBPASS = "aaaaaa" ;
    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) ;  //注册返回值类型,因为第二个和第三个参数分别是INOUT和OUT类型,所以有返回值,要注册类型。
        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() ;            // 数据库关闭
    }
};
原文地址:https://www.cnblogs.com/alsf/p/6736192.html