吴裕雄--天生自然JAVA数据库编程:CallableStatement接口

DELIMITER // 
DROP PROCEDURE myproc //    -- 删除过程
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
//

DELIMITER ;
SET @x1=70 ;    -- 定义变量x1,内容为70
SET @x2=80 ;    -- 定义变量x2,内容为80
CALL myproc(@x1,@x2,@x3) ;
SELECT @x1,@x2,@x3 ;
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/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() ;            // 数据库关闭
    }
};

猜你喜欢

转载自www.cnblogs.com/tszr/p/12158898.html