起步软件技术论坛
搜索
 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 997|回复: 2

[结贴] action中遍历table删除时,如果存在多条数据出错

[复制链接]

14

主题

40

帖子

184

积分

初级会员

Rank: 2

积分
184
QQ
发表于 2016-4-26 18:47:53 | 显示全部楼层 |阅读模式
本帖最后由 oz24573 于 2016-4-26 18:49 编辑

Iterator<Row> it = table.iterator();
                        while (it.hasNext()){
                            Row r = it.next();     
                            Object v = r.getValue("fHM");
                            v.toString();
                            table.getMetaData().setKeyColumn("fHM");                  
                            table.deleteRows(v);
                            table.save("/sc/sc/data");}

当table中只有一条数据时,可以删除,当有多条时就执行不下去了,为什么 ??

91

主题

13万

帖子

3万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
35920
发表于 2016-4-27 09:43:44 | 显示全部楼层
参考
  1. String ksql = "select AP_RQ.* from AP_RQ AP_RQ  where AP_RQ.fName like '%delete%'";
  2.                 Table table = KSQL.select(ksql, null, "/appdemo/test/data", null);
  3.                 table.getMetaData().setKeyColumn("fName");
  4.                 Set<String> ids = new HashSet<String>();
  5.                 Iterator it = table.iterator();
  6.                 while (it.hasNext()) {
  7.                         Row row = (Row) it.next();
  8.                         String fName = (String) row.getValue("fName");
  9.                         ids.add(fName);
  10.                 }
  11.                 table.getMetaData().setKeyColumn("fName");
  12.                 for (String id : ids) {
  13.                         table.deleteRows(id);
  14.                 }
  15.                 table.save("/appdemo/test/data");
复制代码
远程的联系方法QQ1392416607,添加好友时,需在备注里注明其论坛名字及ID,公司等信息
发远程时同时也发一下帖子地址,方便了解要解决的问题  WeX5教程  WeX5下载



如按照该方法解决,请及时跟帖,便于版主结贴
回复 支持 反对

使用道具 举报

14

主题

40

帖子

184

积分

初级会员

Rank: 2

积分
184
QQ
 楼主| 发表于 2016-4-27 10:20:36 | 显示全部楼层
已解决,请结贴
在执行删除前重建table来删除就可以了。
        Iterator<Row> it = table.iterator();
                        while (it.hasNext()){
                            Row r = it.next();     
                Object v = r.getValue("fHM");
                            Object i = r.getValue("fZS");
                                       v.toString();
                                                    int zs = Integer.parseInt(String.valueOf(i));
                                                    String bselecthm = "select SC_HMB.* from SC_HMB SC_HMB ";
                                                    String bfilterhm = "where SC_HMB.fZBID = '" + xzid + "' ";
                                                    String bksqlhm = bselecthm + bfilterhm ;
                                                            Table tablehm = KSQL.select(bksqlhm,null,"/sc/sc/data",null);
                                                            tablehm.getMetaData().setKeyColumn("fHM");                  
                                            tablehm.deleteRows(v);         
                                            tablehm.save("/sc/sc/data");  }
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|X3技术论坛|Justep Inc.    

GMT+8, 2024-5-7 06:21 , Processed in 0.072630 second(s), 23 queries .

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表