转自原文 ArcEngine数据删除几种方法和性能比较

一、  几种删除方法代码

1.  查询结果中删除

private void Delete1(IFeatureClass PFeatureclass)

{

IQueryFilter pQueryFilter = new QueryFilterClass();

pQueryFilter.WhereClause = "objectID<=" + DeleteNum;

IFeatureCursor pFeatureCursor = PFeatureclass.Search(pQueryFilter, false);IFeature pFeature = pFeatureCursor.NextFeature();

while (pFeature != null)

{

pFeature.Delete();

pFeature = pFeatureCursor.NextFeature();

}

System.Runtime.InteropServices.Marshal.ReleaseComObject(pQueryFilter);

}

2.  更新游标删除

private void Delete2(IFeatureClass PFeatureclass)

{

IQueryFilter pQueryFilter = new QueryFilterClass();

pQueryFilter.WhereClause = "objectID<=" + DeleteNum;

IFeatureCursor pFeatureCursor = PFeatureclass.Update(pQueryFilter, false);

IFeature pFeature = pFeatureCursor.NextFeature();

while (pFeature != null)

{

pFeatureCursor.DeleteFeature();

pFeature = pFeatureCursor.NextFeature();

}

System.Runtime.InteropServices.Marshal.ReleaseComObject(pQueryFilter);

}

3.  使用DeleteSearchedRows删除

private void Delete4(IFeatureClass PFeatureclass)

{

IQueryFilter pQueryFilter = new QueryFilterClass();

pQueryFilter.WhereClause = "objectID<=" + DeleteNum;

ITable pTable = PFeatureclass as ITable;

pTable.DeleteSearchedRows(pQueryFilter);

System.Runtime.InteropServices.Marshal.ReleaseComObject(pQueryFilter);

}

 

4.  ExecuteSQL删除

private void Delete4(IFeatureClass PFeatureclass)

{

IDataset pDataset = PFeatureclass as IDataset;

pDataset.Workspace.ExecuteSQL("delete from " + PFeatureclass.AliasName + " where objectid<=" + DeleteNum);

}

二、  测试性能和比较

1 相同的数据条件,删除2000条记录

2 测试代码

IFeatureLayer pFeatureLayer = axMapControl1.Map.get_Layer(0) as IFeatureLayer;

IFeatureClass PFeatureClass = pFeatureLayer.FeatureClass;

System.Diagnostics.Stopwatch MyWatch = new System.Diagnostics.Stopwatch();

MyWatch.Start();

Delete1(PFeatureClass)

//Delete2(PFeatureClass);

//Delete3(PFeatureClass);

//Delete4(PFeatureClass);

ArcEngine数据删除几种方法和性能比较的更多相关文章

  1. ArcEngine数据删除几种方法和性能比较[转]

    四个解决方案: 1.IFeatureCursor 游标查询后,遍历删除 2.更新游标删除IFeatureCursor.DeleteFeature() 3.ITable.DeleteSearchedRo ...

  2. MySQL查询随机数据的4种方法和性能对比

    从MySQL随机选取数据也是我们最常用的一种发发,其最简单的办法就是使用”ORDER BY RAND()”,本文介绍了包括ORDER BY RAND()的4种获取随机数据的方法,并分析了各自的优缺点. ...

  3. python获取字母在字母表对应位置的几种方法及性能对比较

    python获取字母在字母表对应位置的几种方法及性能对比较 某些情况下要求我们查出字母在字母表中的顺序,A = 1,B = 2 , C = 3, 以此类推,比如这道题目 https://project ...

  4. SQLServer 批量插入数据的两种方法

    SQLServer 批量插入数据的两种方法-发布:dxy 字体:[增加 减小] 类型:转载 在SQL Server 中插入一条数据使用Insert语句,但是如果想要批量插入一堆数据的话,循环使用Ins ...

  5. SQL 2005批量插入数据的二种方法

    SQL 2005批量插入数据的二种方法 Posted on 2010-07-22 18:13 moss_tan_jun 阅读(2635) 评论(2) 编辑 收藏 在SQL Server 中插入一条数据 ...

  6. PHP获取POST数据的几种方法汇总

    一.PHP获取POST数据的几种方法 方法1.最常见的方法是:$_POST['fieldname']; 说明:只能接收Content-Type: application/x-www-form-urle ...

  7. 关于iOS去除数组中重复数据的几种方法

    关于iOS去除数组中重复数据的几种方法   在工作工程中我们不必要会遇到,在数组中有重复数据的时候,如何去除重复的数据呢? 第一种:利用NSDictionary的AllKeys(AllValues)方 ...

  8. PHP生成随机密码的4种方法及性能对比

    PHP生成随机密码的4种方法及性能对比 http://www.php100.com/html/it/biancheng/2015/0422/8926.html 来源:露兜博客   时间:2015-04 ...

  9. Java构造和解析Json数据的两种方法详解二

    在www.json.org上公布了很多JAVA下的json构造和解析工具,其中org.json和json-lib比较简单,两者使用上差不多但还是有些区别.下面接着介绍用org.json构造和解析Jso ...

随机推荐

  1. vue中关于prop

    组件之间的项目通信在vue中十分常见,父组件的数据传到子组件需要prop的支持,我们来看下prop 1.html的特性名大小写不敏感,浏览器会把所有大写字母解释为小写字母,使用dom模板时,使用等价的 ...

  2. HTTP服务器状态码定义

    HTTP服务器状态代码定义 1.1 消息1xx(Informational 1xx) 该类状态代码用于表示临时回应.临时回应由状态行(Status-Line)及可选标题组成, 由空行终止.HTTP/1 ...

  3. DG性能

    网络带宽 根据primary database redo产生的速率,计算传输redo需要的带宽. 出去tcp/ip网络其余30%的开销,计算需要的带宽公式: 需求带宽=((每秒产生redo的速率峰值/ ...

  4. umask---默认权限掩码

  5. js10---call方法总结

    <html> <body> <script type="text/javascript"> function Obj(x, y){ this.x ...

  6. Flume的可靠性

    Flume的可靠性 当节点出现故障时,日志能够被传送到其他节点上而不会丢失. Flume提供了三种级别的可靠性保障,从强到弱依次分别为:end-to- end(收到数据agent首先将event写到磁 ...

  7. 不用浏览器,直接用代码发送文件给webservices所在服务器 并且可以周期行的发送

    package com.toic.test; import java.io.DataInputStream; import java.io.DataOutputStream; import java. ...

  8. web存储方法,现成代码

    1.cookie的设置与取用 function setCookie(cname,cvalue,exdays){ var d = new Date(); d.setTime(d.getTime()+(e ...

  9. vue中类名和组件经过刷新不对应的解决办法

    方法一: 页面路由如下: index.js路由文件如下: { path: '/myOrder', name: '我的订单', menuShow: true, component: myOrder, c ...

  10. centos7.2 64位安装java

    1.  wget http://download.oracle.com/otn-pub/java/jdk/8u131-b11/d54c1d3a095b4ff2b6607d096fa80163/jdk- ...