ArcEngine数据删除几种方法
来源:互联网 发布:java约瑟夫环不用链表 编辑:程序博客网 时间:2024/05/22 14:21
一、 几种删除方法代码
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);
//Delete5(PFeatureClass);
MyWatch.Stop();
MessageBox.Show("删除时间:" + MyWatch.ElapsedMilliseconds.ToString() + "毫秒");
3、 测试情况
测试方法
第一次时间(单位ms)
第一次时间(单位ms)
1
5214ms
5735ms
2
299ms
290Ms
3
59ms
28ms
4
26ms
26ms
三、 结论
1、 使用ExecuteSQL删除最快,数据库的效率最高。
2、 DeleteSearchedRows和ExecuteSQL属于批量删除,性能较优。
3、 查询结果中删除,速度最慢,如果你使用这种方法,建立你马上修改你的程序,因为你在浪费时间。
- ArcEngine数据删除几种方法
- ArcEngine数据删除几种方法和性能比较
- ArcEngine,C#数据删除几种方法以及性能比较
- ArcEngine数据删除几种方法和性能比较
- ArcEngine数据删除几种方法和性能比较【转载】
- ArcEngine数据删除几种方法和性能比较
- ArcEngine数据删除几种方法和性能比较
- ArcEngine数据删除几种方法和性能比较
- ArcEngine 几种删除数据的比较
- ArcEngine 几种删除数据的比较
- Oracle 删除数据的几种方法
- Oracle 删除数据的几种方法
- Oracle 删除数据的几种方法
- arcengine打开cad文件的几种方法
- 技巧:删除表中重复数据的几种方法
- 删除SAP数据库表数据的几种方法(转载)
- 几种在SQLServer中删除重复数据方法
- NHibernate 中删除数据的几种方法
- Head First C# 中文版 图文皆译 第八章 枚举和集合 page335
- C#中的try与finally
- 对日外包的感想
- 抽象类与接口的区别
- Tomcat5.5配置-多域名绑定和虚拟目录
- ArcEngine数据删除几种方法
- SQL语句技巧汇总
- 解决win2003 iis6 的"请求的资源在使用中"
- 简单工厂模式(Simple Factory)
- 2.0中WinForm自定义的程序配置存放到哪里去了
- Datalist和Repeater嵌套
- 一步一步学硬盘分区及大小调整
- 赋值运算符重载引发的思考(引用的强大功能)
- 百度对CN域名看法