package com.rlovep.callable; import java.sql.CallableStatement; import java.sql.Connection; import java.sql.ResultSet; import java.sql.SQLException; import org.junit.Test; import com.rlovep.jdbc.JdbcUtil; /** * * @ClassName: Demo1 * @Description: 使用CablleStatement调用存储过程 * @author peace w_peace@163.com * @date 8 Nov 2015 8:03:33 pm * */ public class Demo1 { //创建过程的sql语句 /*delimiter $ create procedure pro_findById(in id int) begin select * from stu where sid=id; end $*/ /** * * @Title: testCallIn * @Description:通过CallableStatement执行传入输入参数的过程 * @return:void * @throws * @author peace w_peace@163.com */ @Test public void testCallIn(){ Connection conn = null; CallableStatement stmt = null; ResultSet rs = null; try { conn=JdbcUtil.getConnection(); //调用过程的sql语句 String sql="call pro_findById(?)"; //过得调用过程的CallableStatement stmt = conn.prepareCall(sql); //设置位置参数 stmt.setInt(1, 8); //调用过程:使用executeQuery() rs = stmt.executeQuery(); //便利结果 if(rs.next()) { int id = rs.getInt("sid"); String name = rs.getString("sname"); String gender = rs.getString("sgender"); System.out.println(id+","+name+","+gender); } } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } JdbcUtil.close(conn, stmt, rs); } //建立过程的sql /*delimiter $ create procedure pro_findById2(in id int , out Iname varchar(20)) begin select sname into Iname from stu where sid=id; end $*/ /** * * @Title: testCallOut * @Description: CallableStatement调用传入输入输出参数的过程 * @return:void * @throws * @author peace w_peace@163.com */ @Test public void testCallOut(){ Connection conn = null; CallableStatement stmt = null; ResultSet rs = null; try { //获得连接 conn=JdbcUtil.getConnection(); //执行过程的sql语句 String sql="call pro_findById2(?,?)"; //获得CallableStatement stmt = conn.prepareCall(sql); //设置位置参数 stmt.setInt(1, 8); //对于输出参数的设置:第一个参数为输出参数的位置,第二个参数为输出参数类型 stmt.registerOutParameter(2, java.sql.Types.VARCHAR); //执行,并获得结果 rs = stmt.executeQuery(); //输出rs System.out.println(rs); //通过调用CallableStatement。获得输出参数的,通过输出参数的位置获得 System.out.println(stmt.getString(2)); } catch (SQLException e) { e.printStackTrace(); } JdbcUtil.close(conn, stmt, rs); } }