执行输入参数的存储过程:
public static void main(String[] args) {
Connection conn = null;
CallableStatement cs = null;
ResultSet rs = null;
try {
conn = JdbcUtil.getConnection();
String sql = "CALL pro_searchById(2);";
cs = conn.prepareCall(sql);
rs = cs.executeQuery();
while (rs.next()){
int id = rs.getInt("id");
String name = rs.getString("name");
String address = rs.getString("address");
System.out.println(id+":"+name+":"+address);
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally {
JdbcUtil.release(conn, cs,rs);
}
}
执行带输入输出参数的存储过程:
public static void main(String[] args) {
/**
* 执行带有输出参数的存储过程
*/
Connection conn = null;
CallableStatement stmt = null;
try{
conn = JdbcUtil.getConnection();
String sql = "CALL pro_queryNameById(?,?);"; // 不管输入还是输出都可以使用?号代替参数
stmt = conn.prepareCall(sql);
/**
* 设置输入参数
*/
stmt.setInt(1, 2);//第一个参数,传入4
/**
* 设置输出参数
* sqlType: 就是存储过程中输出参数的数据类型
*/
stmt.registerOutParameter(2, java.sql.Types.VARCHAR);
stmt.executeQuery();
/**
* 从输出参数中获取数据。获取的方法 getXXX()方法
* 注意:
* ResultSet的getXX()方法为了获取列的值
* CallableStatement的getXXX()为了获取输出参数的值
*/
String name = stmt.getString(2);//这里的参数和设置输出参数的位置保持一致的!!!!
System.out.println(name);
}catch(Exception e){
e.printStackTrace();
}finally{
//7)关闭资源
JdbcUtil.release(conn, stmt);
}
}