JSP + Access 使用Group By 操作,为什么会出一批空记录,以null的形式打印出来

sanshizi 2009-05-12 09:11:25
请高手指点迷津,什么情况下会出现此等怪现像


String sql="SELECT Sum(merit_inventory_chuhuo.quality) AS xquality, merit_inventory_chuhuo.sku FROM merit_inventory_chuhuo GROUP BY merit_inventory_chuhuo.sku";

db.query(sql);
while(db.rs_next()){
sku=db.rs_getString("sku");
quality=db.rs_getInt("xquality");

out.print(rows+". "+sku+" "+quality+"<br>");
}

上面是部分代码,我的merit_inventory_chuhuo表中有1635条记录,执行上面的sql语句后,打印结果是这样的,分组统计出了183条数据,剩下全部以null的形式打印出来了,
180. 401-362 84
181. 401-363 18
182. 401-366 4
183. 401-367 2
184. null -1
185. null -1
186. null -1
187. null -1
188. null -1
189. null -1
190. null -1


我的类的片断:

//....
ResultSet rs = null;
public ResultSet query(String strSql){
try{
this.rs = stmt.executeQuery(strSql);
return this.rs;
}catch(SQLException e){
return null;
}catch(NullPointerException e){
return null;
}catch(IOException e){
return null;
}
}
public String rs_getString(int column){
try{
return this.rs.getString(column);
}catch(SQLException e){
return e.toString();
}
}

public int rs_getInt(String column){
try{
return this.rs.getInt(column);
}catch(SQLException e){
return -1;
}
}
//....
...全文
83 1 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
sanshizi 2010-11-24
  • 打赏
  • 举报
回复
这个问题还是我自己琢磨出来了,是因为我创建的statement 的类型 ResultSet.TYPE_SCROLL_INSENSITIVE

要想解决这个问题,就要用ResultSet.TYPE_SCROLL_INSENSITIVE 就是结果集游标不可滚动

但是有时候需要通过滚动进行分页,那怎么办,

又经过了1年,也就是到现在我,我终于找出来一个方法
那就是把sql再改造一下,
SELECT Sum(quality) AS xquality, sku FROM merit_inventory_chuhuo GROUP BY sku

改为:

select * from ( SELECT Sum(quality) AS xquality, sku FROM merit_inventory_chuhuo GROUP BY sku ) order by sku

有几个注意点,
1.“select * from ( ”后面一定要有一个空格
2.“GROUP BY sku”后面也一定要有一个空格
3. 一定要再加一个order by ,这里就选用了sku

81,122

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧