注册 登录  
 加关注
查看详情
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

程序员驿站

淘宝店:http://shop106888457.taobao.com

 
 
 

日志

 
 

AE查询与修改  

2013-08-10 17:05:52|  分类: ArcEngine |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

用ArcEngine做二次开发,做查询并对查询到的数据做修改是再正常不过的事情了!最近也做了一点这方面的学习。

在查询过程中,主要用到,Search、Select、Update等方法。

以下对几种方法做简要的介绍:

1、    用ISelectionSet接口查询,返回IDs,再根据IDs获取要素,我现在用的是这种方法,因为我频繁的查数据,如果用游标就会产生大量的游标,很容易出现如“不能打开其他表了”或“调用COM组件错误”等错误提示。

  IQueryFilter pQueryFilter = new QueryFilterClass();

  pQueryFilter.WhereClause = "IDs=1";

ISelectionSet selectionSet = lastFclass.Select(pQueryFilter,
                    esriSelectionType.esriSelectionTypeIDSet,
                    esriSelectionOption.esriSelectionOptionNormal, lastDset.Workspace);
                //use an IEnumIDs to read the SelectionSet IDs       
                IEnumIDs enumIDs = selectionSet.IDs;
                int iD = enumIDs.Next();
                if (iD == -1)
                    continue;
                IFeature lastFeature = lastFclass.GetFeature(iD);

2、用游标查询(Search),少量的修改可以用此方法,并最后用Feature的store()方法保存修改。但此方法如果频繁使用,因游标的不断递增,占用内存较大!相比较而言,上一种方法占用的内存较小。

IQueryFilter pQueryFilter = new QueryFilterClass();

  pQueryFilter.WhereClause = "IDs=1";//例子,条件根据需要而定

   IFeatureCursor pmFeatureCursor = currentFclass.Search(pQueryFilter, false);//.Update(null, false);
            IFeature currentFeature = pmFeatureCursor.NextFeature();

while(currentFeature!=null)

{

     currentFeature =pmFeatureCursor..NextFeature();

}

pmFeatureCursor.Flush()

3、用游标查询(Update),如果你想对查询的数据做修改,最好用Update方法

IQueryFilter pQueryFilter = new QueryFilterClass();

  pQueryFilter.WhereClause = "IDs=1";//例子,条件根据需要而定

   IFeatureCursor pmFeatureCursor = currentFclass.Update(pQueryFilter, false);//.Update(null, false);
            IFeature currentFeature = pmFeatureCursor.NextFeature();

while(currentFeature!=null)

{

    //修改currentFeature要素字段值

    ……

   ……

    pmFeatureCursor.UpdateFeature(currentFeature);//更新修改
                currentFeature = pmFeatureCursor.NextFeature();  //遍历的游标

}

   pmFeatureCursor.Flush()

  评论这张
 
阅读(583)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2018