一、幾種刪除方法**
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();
3、 測試情況
測試方法
第一次時間(單位ms)
第一次時間(單位ms)
5214ms
5735ms
299ms
290ms
59ms
28ms
26ms
26ms
三、 結論
1、 使用executesql刪除最快,資料庫的效率最高。
2、 deletesearchedrows和executesql屬於批量刪除,效能較優。
3、 查詢結果中刪除,速度最慢,如果你使用這種方法,建立你馬上修改你的程式,因為你在浪費時間。
4、 小資料量記錄數小於500000條,請使用deletesearchedrows或executesql,否則使用更新游標刪除(方法2),加上進度條,這樣介面很友好。
新增 複製 刪除feature
1 插入 向featureclass中批量插入features 批量插入features,用buffer的方法,要比迴圈乙個個store的方法快 運算元據所在的ifeatureclass private void insertfeatures ifeatureclass pfeatureclass ...
OGR C 刪除指定路徑Feature
根據指定shp檔案的路徑清理feature,也就是shp資料的屬性資訊,但保留表頭 private void delete click object sender,eventargs e console.writeline olayer.getname tostring 這一步是必須的,重新整理資料...
十七 Feature分支
軟體開發中,總有無窮無盡的新的功能要不斷新增進來。新增乙個新功能時,你肯定不希望因為一些實驗性質的 把主分支搞亂了,所以,每新增乙個新功能,最好新建乙個feature分支,在上面開發,完成後,合併,最後,刪除該feature分支。現在,你終於接到了乙個新任務 開發代號為vulcan的新功能,該功能計...