当前位置: 技术问答>java相关
问一个servlet和存储过程返回值问题,会的请回答,不会的捧个场。
来源: 互联网 发布时间:2015-02-14
本文导语: 我现在用servlet用jdbc读取存储过程。但产生了一个问题,call.excute后用call.get方法得到一个返回参数,然而再想取得resultset就不行了。不知是为什么?有明白的吗? 应该怎么进行,不能执行两次excute吧 | ...
我现在用servlet用jdbc读取存储过程。但产生了一个问题,call.excute后用call.get方法得到一个返回参数,然而再想取得resultset就不行了。不知是为什么?有明白的吗?
应该怎么进行,不能执行两次excute吧
应该怎么进行,不能执行两次excute吧
|
先取resultset,再取返回值,行不行我也没有实践过 :)
resultset只能用一次?什么意思,如果你的结果集不能滚动,当然只能用一次拉,要不你就把结果集取出来放到一个Vector对象里。
resultset只能用一次?什么意思,如果你的结果集不能滚动,当然只能用一次拉,要不你就把结果集取出来放到一个Vector对象里。
|
Stored procedure with Input/Output parms and a ResultSet
Thanks to T. Guirado for the tips. public static int storedProcWithResultSet (String parms) throws Exception
// Stored procedure to be called.
CallableStatement cs = conn.prepareCall
("{? = call mypackage.p_astoreproc (?,?,?,?,?,?,?)}");
// register input parameters
cs.registerOutParameter(1, java.sql.Types.INTEGER); // return code
cs.setString(2, "");
cs.setString(3, "");
cs.setString(4, parms);
// regsiter ouput parameters
cs.registerOutParameter(5, java.sql.Types.CHAR);
cs.registerOutParameter(6, java.sql.Types.CHAR);
cs.registerOutParameter(7, java.sql.Types.CHAR);
// Procedure execution
ResultSet rs = cs.executeQuery();
// Note that you need to retrieve the ResultSet _before_ retrieving
// OUTPUT parameters.
if ( rs == null)
System.out.println( "No resultSet!");
else {
// To retrieve columns info.
ResultSetMetaData rsmd = rs.getMetaData();
int nbCol = rsmd.getColumnCount();
int i = 0;
int j = 1;
Vector vResSet = new Vector();
while (rs.next ()) {
System.out.println( "Record " + (i+1));
// putting the ResultSet columns in a vector
for ( j = 1; j
Thanks to T. Guirado for the tips. public static int storedProcWithResultSet (String parms) throws Exception
// Stored procedure to be called.
CallableStatement cs = conn.prepareCall
("{? = call mypackage.p_astoreproc (?,?,?,?,?,?,?)}");
// register input parameters
cs.registerOutParameter(1, java.sql.Types.INTEGER); // return code
cs.setString(2, "");
cs.setString(3, "");
cs.setString(4, parms);
// regsiter ouput parameters
cs.registerOutParameter(5, java.sql.Types.CHAR);
cs.registerOutParameter(6, java.sql.Types.CHAR);
cs.registerOutParameter(7, java.sql.Types.CHAR);
// Procedure execution
ResultSet rs = cs.executeQuery();
// Note that you need to retrieve the ResultSet _before_ retrieving
// OUTPUT parameters.
if ( rs == null)
System.out.println( "No resultSet!");
else {
// To retrieve columns info.
ResultSetMetaData rsmd = rs.getMetaData();
int nbCol = rsmd.getColumnCount();
int i = 0;
int j = 1;
Vector vResSet = new Vector();
while (rs.next ()) {
System.out.println( "Record " + (i+1));
// putting the ResultSet columns in a vector
for ( j = 1; j