• ArcEngine数据删除几种方法和性能比较


    转自原文 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);

  • 相关阅读:
    pug 基础篇
    胡里胡哨-老师改卷纸
    javaScript 原生技巧
    angular9的学习(十二)插槽
    typescript高级编程(二)
    typescript高级编程(一)
    ActiveMq 使用指北
    基于ZooKeeper的分布式锁实现
    windows下配置启动脚本并设置开机自启及相应关闭脚本
    腾讯位置服务JavaScript API GL实现文本标记的碰撞避让
  • 原文地址:https://www.cnblogs.com/arxive/p/6110155.html
Copyright © 2020-2023  润新知