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() ; // 数据库关闭 } };