`

关于for循环的跳出问题技巧及数据集的处理方式

阅读更多


如图所示:对结果集的操作主要步骤如下

String sql = "select * from emp";
pstmt = conn.prepareStatement(sql);

//第四步,返会结果集
rs = pstmt.executeQuery();
while (rs.next()) {
int ID = rs.getInt("ID");
String org_code = rs.getString("org_code");

String org_name = rs.getString("org_name ");

String org_count = rs.getString("org_count");

}

这样就能够得到各个字段的值进而对各字段进行操作,这是jdbc提供的处理方法

但如果情况如下使用Hibernate查询返回的List 需要对其用Iterator遍历拆解在放入到实体中

代码如下:

 

public Pagination queryOrg_InfoCount(int siteId,int areaId ,String orgName, int pageNo, int pageSize) {
  ArrayList<Org_Info> org_Info_list = new ArrayList();
  Org_Info bmsg=null;
  String sql="";
  try {
   if(areaId!=0)
   {
    if(orgName!=null)
    {
     sql="select a.id,a.org_code,a.org_name,(select count(*) from llt_report b where b.send_org_id=a.id) as org_count from llt_org_info a where a.area_code="+ areaId + " and (a.org_name like '"+ orgName+ "' or a.org_code like '"+orgName+"') order by org_count desc";
    }
    else
    {
     sql="select a.id,a.org_code,a.org_name,(select count(*) from llt_report b where b.send_org_id=a.id) as org_count from llt_org_info a where a.area_code="+ areaId + "  order by org_count desc";
    }
   }
   else
   {
    sql="select a.id,a.org_code,a.org_name,(select count(*) from llt_report b where b.send_org_id=a.id) as org_count from llt_org_info a order by org_count desc";
   }
   Query query =getSession().createSQLQuery(sql);
   int totalCount = query.list().size();
   Pagination p = new Pagination(pageNo, pageSize, totalCount);
   query.setFirstResult(p.getFirstResult());
   query.setMaxResults(p.getPageSize());
   List list =query.list();
   Iterator it=list.iterator();
   Object [] results;
   while(it.hasNext())
   {
    bmsg = new Org_Info();
    results=(Object[]) it.next();
   
    for(int i=0;i<results.length;i++)
    {
     bmsg.setId(Integer.parseInt(results[i].toString()));
     bmsg.setOrg_code(results[i+1].toString());
     bmsg.setOrg_name(results[i+2].toString());
     bmsg.setFource_count(results[i+3].toString());
     i = i + results.length - 1; //注意这是重点
     org_Info_list.add(bmsg);
    }
    p.setList(org_Info_list);
   
   }
   return p;
  } catch (Exception e) {
   e.printStackTrace();
  }
  return null;
 
 }
 

如上所示:注释行去掉程序就会在循环里重复读取某一行数据直到报错,这时要读取下一行数据就得跳出for 到while中

这时如注释行:对i索引操作使其条件自相矛盾跳出循环重而达到目的



 

  • 大小: 89.3 KB
分享到:
评论

相关推荐

    PHP和MySQL WEB开发(第4版)

    1.15.2 for和foreach循环 1.15.3 do...while循环 1.16 从控制结构或脚本中跳出 1.17 使用可替换的控制结构语法 1.18 使用declare 1.19 下一章 第2章 数据的存储与检索 2.1 保存数据以便后期使用 2.2 存储和检索Bob...

    PHP和MySQL Web开发第4版pdf以及源码

    1.15.2 for和foreach循环 1.15.3 do...while循环 1.16 从控制结构或脚本中跳出 1.17 使用可替换的控制结构语法 1.18 使用declare 1.19 下一章 第2章 数据的存储与检索 2.1 保存数据以便后期使用 2.2 存储和...

    PHP和MySQL Web开发第4版

    1.15.2 for和foreach循环 1.15.3 do...while循环 1.16 从控制结构或脚本中跳出 1.17 使用可替换的控制结构语法 1.18 使用declare 1.19 下一章 第2章 数据的存储与检索 2.1 保存数据以便后期使用 2.2 存储和...

    Oracle SQL高级编程(资深Oracle专家力作,OakTable团队推荐)--随书源代码

    9.3.3 FOR循环 231 9.4 返回更新后的行 232 9.5 求解顺序 233 9.5.1 行求解顺序 233 9.5.2 规则求解顺序 235 9.6 聚合 237 9.7 迭代 237 9.7.1 一个例子 238 9.7.2 PRESENTV与空值 239 9.8 查找表 240 ...

    《你必须知道的495个C语言问题》

    这样看来,所有的问题都解决了,是吗? 2  1.4 新的64位机上的64位类型是什么样的? 3 指针声明 3 1.5 这样的声明有什么问题?char *p1, p2; 我在使用p2的时候报错了。 3 1.6 我想声明一个指针,并为它分配...

    你必须知道的495个C语言问题

    这样看来,所有的问题都解决了,是吗? 1.4 新的64位机上的64位类型是什么样的? 指针声明 1.5 这样的声明有什么问题?char*p1,p2;我在使用p2的时候报错了。 1.6 我想声明一个指针,并为它分配一些空间,但却...

    PHP基础教程 是一个比较有价值的PHP新手教程!

    2.4 数据类型 PHP支持整数、浮点数、字符串、数组和对象。变量类型通常不由程序员决定而由PHP运行过程决定(真是好的解脱!)。但是类型也可以被函数cast或者settype()明确的设定。 数值 数值类型可以是整数或是...

Global site tag (gtag.js) - Google Analytics