在使用这2个方法时由于搞不清楚差别着实吃了不少苦头,但是俗话说得好,吃一堑长一智,吃过亏的事情往往会记得比较牢. 这两个变量都是用来在JSP中调用实行SQL语句并且返回一个记录集的: CDatabaseOra db = new CDatabaseOra(); db.InitOraDB(); ResultSet rs = null; String sql,sql2; pt.initDB(); sql = "select to_char(add_months(to_date("+LDATE.substring(0,6)+"01,'yyyymmdd'),-4'yyyymmdd') from dual "; rs = db.execute(sql); while(rs.next()){Statement;} 首先db.execute和db.executeQuery不能在同一个循环中重复调用例如: rs = db.execute(sql); while(rs.next()){ Statement; rs2 = db.execute(sql2);} 是会出错的,应该将其中一个方法修改为db.executeQuery 第二个要注意的地方就是db.executeQuery只能支持被调用255次,所以一般放在最外层被较少重复调用的循环使用. 最后,在同一个循环下的子循环中可以重复调用例如: rs = db.execute(sql); while(rs.next()){ Statement; rs2 = db.execute(sql2); while(rs2.next()){Statement} rs3 = db.execute(sql3); while(rs3.next()){Statement} }在使用这2个方法时由于搞不清楚差别着实吃了不少苦头,但是俗话说得好,吃一堑长一智,吃过亏的事情往往会记得比较牢.
这两个变量都是用来在JSP中调用实行SQL语句并且返回一个记录集的:
CDatabaseOra db = new CDatabaseOra();
db.InitOraDB();
ResultSet rs = null;
String sql,sql2;
pt.initDB();
sql = "select to_char(add_months(to_date("+LDATE.substring(0,6)+"01,'yyyymmdd'),-4'yyyymmdd') from dual ";
rs = db.execute(sql);
while(rs.next()){Statement;}

rs = db.execute(sql);
while(rs.next()){
Statement;
rs2 = db.execute(sql2);}
是会出错的,应为这样execute应该将其中一个方法修改为db.executeQuery

最后,在同一个循环下的子循环中可以重复调用例如:
rs = db.execute(sql);
while(rs.next()){
Statement;
rs2 = db.execute(sql2);
while(rs2.next()){Statement}
rs3 = db.execute(sql3);
while(rs3.next()){Statement}
}
如果纪录超过256条就会报已经超过游标的最大打开出之类的错
回复Comments
作者:
{commentrecontent}