26、Java调用Oracle存储过程?
2016-03-30 20:12
555 查看
①导包
import java.sql.CallableStatement;
import java.sql.Connection;
import java.sql.ResultSet;
②声明对象
// 声明数据库连接对象
Connection con = null;
// 定义标准形式调用已储存过程CallableStatement对象
CallableStatement cs = null;
// 定义结果集ResultSet的对象rs
ResultSet rs = null;
③调用存储过程取结果集
try {
// 获取连接
con = SessionFactoryUtils.getDataSource(getSessionFactory()).getConnection();
// 调用存储过程
cs = con.prepareCall("{存储过程名称(?,?,?,?,?)}");
// 设置输入参数
cs.setString(1, xxx);
// 设置输入参数
cs.setString(2, yyy);
// 设置输出参数
cs.registerOutParameter(3, OracleTypes.NUMBER);
cs.registerOutParameter(4, OracleTypes.VARCHAR);
cs.registerOutParameter(5, OracleTypes.CURSOR);
cs.execute();
// 获取结果集
rs = (ResultSet) cs.getObject(5);
④遍历结果集,构建实体bean
/*
* ResultSet rsRbb游标(指针)最初位于第一行之前
* 调用next()方法游标(指针)往下移动一行
* 新的当前行有效,则返回 true;如果不存在下一行,则返回 false
*/
Bean bean;
while(rs.next()){
bean = new Bean();
bean.setxx(rs.getString("XXX"));
}
} catch (Exception e) {
e.printStackTrace();
} finally {
if (rsRbb != null) {
try {
// 关闭结果集rsRbb,释放资源
rsRbb.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if (cs != null) {
try {
// 关闭CallableStatement对象,释放资源
cs.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
try {
// 关闭连接
con.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
//释放资源,关闭连接 注意try catch finlly 语句。
import java.sql.CallableStatement;
import java.sql.Connection;
import java.sql.ResultSet;
②声明对象
// 声明数据库连接对象
Connection con = null;
// 定义标准形式调用已储存过程CallableStatement对象
CallableStatement cs = null;
// 定义结果集ResultSet的对象rs
ResultSet rs = null;
③调用存储过程取结果集
try {
// 获取连接
con = SessionFactoryUtils.getDataSource(getSessionFactory()).getConnection();
// 调用存储过程
cs = con.prepareCall("{存储过程名称(?,?,?,?,?)}");
// 设置输入参数
cs.setString(1, xxx);
// 设置输入参数
cs.setString(2, yyy);
// 设置输出参数
cs.registerOutParameter(3, OracleTypes.NUMBER);
cs.registerOutParameter(4, OracleTypes.VARCHAR);
cs.registerOutParameter(5, OracleTypes.CURSOR);
cs.execute();
// 获取结果集
rs = (ResultSet) cs.getObject(5);
④遍历结果集,构建实体bean
/*
* ResultSet rsRbb游标(指针)最初位于第一行之前
* 调用next()方法游标(指针)往下移动一行
* 新的当前行有效,则返回 true;如果不存在下一行,则返回 false
*/
Bean bean;
while(rs.next()){
bean = new Bean();
bean.setxx(rs.getString("XXX"));
}
} catch (Exception e) {
e.printStackTrace();
} finally {
if (rsRbb != null) {
try {
// 关闭结果集rsRbb,释放资源
rsRbb.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if (cs != null) {
try {
// 关闭CallableStatement对象,释放资源
cs.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
try {
// 关闭连接
con.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
//释放资源,关闭连接 注意try catch finlly 语句。
相关文章推荐
- Oracle之高级查询
- oracle 存储过程中调用存储过程
- Oracle常用命令
- Leaflet+Geoserver+Oracle/Postgis项目搭建(一)
- JDBC连接Oracle数据库时出现的ORA-12505错误及解决办法
- Oracle递归查询(适合树形结构)
- oracle——SQL复习07
- Oracle 数据库基础学习 (四) group by的使用
- Oracle PLSQL语句实例
- Oracle学习(八)----sql语言
- oracle 开发记忆
- Oracle 定时任务小例子
- Oracle SQL*plus常用的命令和函数
- Oracle SQL 经典查询练手第四篇
- oracle表分区详解
- oracle 11g RAC手动卸载grid,no deinstall .
- Oracle the network adapter could not establish the connection
- oracle中distinct用法
- Oracle面试题
- Oracle中的PLsql的符号解释大全