zoukankan      html  css  js  c++  java
  • 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);

  • 相关阅读:
    《数据结构》树与二叉树
    C/C++ 一点笔记(1)
    c#中隐藏基类方法的作用
    VS2010 灵活运用快捷操作功能(新手必看)
    C# 之类复制 MemberwiseClone与Clone(深 浅 Clone)
    DLL笔记
    批处理文件
    .NET Remoting(一)
    MSI安装数据库
    关于用户角色权限的一点想法(RBAC)
  • 原文地址:https://www.cnblogs.com/arxive/p/6110155.html
Copyright © 2011-2022 走看看