在使用这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;}
db.execute在同一层循环中调用只能是1次例如:
rs = db.execute(sql);
while(rs.next()){
Statement;
rs2 = db.execute(sql2);}
是会出错的,应为这样execute应该将其中一个方法修改为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}
}
如果纪录超过256条就会报已经超过游标的最大打开出之类的错