db.execute(sql)与db.executeQuery(sql)的区别

      数据库 2005-9-29 14:1
    在使用这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条就会报已经超过游标的最大打开出之类的错
标签集:TAGS:JAVA JSP execute executeQuery
回复Comments() 点击Count()

回复Comments

{commentauthor}
{commentauthor}
{commenttime}
{commentnum}
{commentcontent}
作者:
{commentrecontent}