//JSP调用存储过程方式
CallableStatement cstmt = conn.prepareCall("{ call Xxcps001_Gettrainfo_Interface(?,?,?)}"); //有几个参数就有几个问号。
cstmt.setFloat(1,param);//设置第一个参数(输入)
cstmt.registerOutParameter(2,Types.FLOAT);//设置第二个参数(输出)
cstmt.registerOutParameter(3,Types.FLOAT);设置第三个参数(输出)
cstmt.execute();
//获取结果集的方法,比如你定义了one来接收第一个输出参数,
//定义了two来接收第二个输出参数,则写法如下:
one=cstmt.getFloat(2);
two=cstmt.getFloat(3);
//这是调用存储过程后获得结果集的方法,在jsp中要写在<%! %>中
private static void display (CallableStatement cstmt,String name)
throws SQLException{
System.out.println("Excute procdure"+name);
while(true){
int rowCount=cstmt.getUpdateCount();
if(rowCount>0){
System.out.println("Updated rows is"+rowCount+".");
//判断是否还有等待处理的结果
if(!cstmt.getMoreResults())break;
continue;
}
//处理情况为:执行结果为resultset
ResultSet rs=cstmt.getResultSet();
if(rs!=null){
ResultSetMetaData rsmd=rs.getMetaData();
//打印结果集的标题
int numCols=rsmd.getColumnCount();
for(int i=1;i<=numCols;i++)
System.out.println("/t/t"+rsmd.getColumnLabel(i)+" ");
System.out.println();
//打印结果集的内容
boolean more=rs.next();
if(!more) System.out.println("/t/t0 /t/t/t0 /t/t0");
while(more){
for(int i=1;i<=numCols;i++)
System.out.print("/t/t"+rs.getString(i)+" ");
more=rs.next();
System.out.println();
}
if(!cstmt.getMoreResults()) break;
continue;
}
if(rowCount==0)
System.out.println("no row is updated!");
if(!cstmt.getMoreResults()) break;
}

509

被折叠的 条评论
为什么被折叠?



