arcengine,深入理解游标Cursors,实现数据的快速查找,插入,删除,更新
数据 实现 快速 深入 理解 删除 更新 查找
2023-09-14 09:02:23 时间
风过无痕 原文 arcengine,深入理解游标Cursors,实现数据的快速查找,插入,删除,更新
深入理解游标Cursors,实现数据的快速查找,插入,删除,更新
1、查找数据Search Cursors
//by yl landgis@126.com yanleigis@21cn.com 2008.7.7
IEnvelope envelope = new EnvelopeClass(); envelope.PutCoords(508786, 681196, 513033, 684341); ISpatialFilter spatialFilter = new SpatialFilterClass(); spatialFilter.Geometry = envelope; String shpFld = featureClass.ShapeFieldName; spatialFilter.GeometryField = shpFld; spatialFilter.SpatialRel = esriSpatialRelEnum.esriSpatialRelIntersects; IQueryFilter queryFilter = new QueryFilterClass(); queryFilter = (IQueryFilter)spatialFilter; IFeatureCursor searchCursor = featureClass.Search(queryFilter, true);//只查询,true快一些 IFeature feature = searchCursor.NextFeature(); int n = 0; while (feature != null){ n++; feature = baseCursor.NextFeature(); }
2、插入数据Insert Cursors—目前数据插入最快的方法
//by yl landgis@126.com yanleigis@21cn.com 2008.7.7
IFeatureBuffer featureBuffer = featureClass.CreateFeatureBuffer(); IFeatureCursor featureCursor = featureClass.Insert(true); object featureOID; featureBuffer.set_Value(featureBuffer.Fields.FindField("InstBy"), "B Pierce"); for (int ic = 0; ic < 99; ic++) { featureBuffer.Shape = geometry featureOID = featureCursor.InsertFeature(featureBuffer); } featureBuffer.set_Value(featureBuffer.Fields.FindField("InstBy"), "K Johnston"); for (int ic = 0; ic < 99; ic++) { featureBuffer.Shape = geometry featureOID = featureCursor.InsertFeature(featureBuffer); } featureCursor.Flush();
3、 数据删除 delete
//by yl landgis@126.com yanleigis@21cn.com 2008.7.7
IFeatureClass featureClass = featureWorkspace.OpenFeatureClass("Parcels"); IQueryFilter queryFilter = new QueryFilterClass(); queryFilter.WhereClause = "ZONING_S = 'R'"; IFeatureCursor updateCursor = featureClass.Update(queryFilter, false); IFeature feature = updateCursor.NextFeature(); int m = 0; while (feature != null) { m++; updateCursor.DeleteFeature(feature); feature = updateCursor.NextFeature(); }
4、数据更新 update
//by yl landgis@126.com yanleigis@21cn.com 2008.7.7 IFeatureClass featureClass = featureWorkspace.OpenFeatureClass("Parcels"); // restrict the number of features to be updated. IQueryFilter queryFilter = new QueryFilterClass(); queryFilter.WhereClause = "ZONING_S = 'U'"; // use IFeatureClass::Update to populate IFeatureCursor IFeatureCursor updateCursor = featureClass.Update(queryFilter, false); int fieldindex = featureClass.FindField("ZONING_S"); IFeature feature = updateCursor.NextFeature(); int m = 0; while (feature != null) { m++; feature.set_Value(fieldindex, "X"); updateCursor.UpdateFeature(feature); feature = updateCursor.NextFeature(); }
相关文章
- 【金猿技术展】一种实现跨不同数据库引擎事务强一致性的系统及方法——提供同一份数据的跨引擎事务一致性能力
- Redis实现数据同步至MySQL(redis同步到mysql)
- 开发SQL Server桌面版开发 让企业快速实现数据价值(sqlserver桌面版)
- Linux实现数据盘挂载快速操作指南(linux挂载数据盘)
- SQL Server导入MySQL,实现快速数据迁移(sqlserver导入mysql)
- MySQL分表实现快速数据插入(mysql分表插入)
- Oracle CDC同步实现以数据变化为基础的增量同步(oraclecdc同步)
- Dubbox搭建Redis实现快速数据存储(dubboxredis)
- 利用SQL Loader实现文本数据导入Oracle(文本数据导入oracle)
- 数据实现处理过期数据:RedisJava的有效解决方案(redisjava过期)
- PHP轻松修改MySQL数据,实现数据高效处理(php修改mysql数据)
- Redis乐观锁:高效实现数据并发控制(redis乐观锁)
- MySQL实现汉字查询,快速找到所需数据(mysql汉字查询)
- 技术Oracle数据库表分区:实现数据查询优化提速(oracle数据库表分区)
- 实现MySQL数据同步的两种方法:比较与选择(mysql两表同步)
- Oracle实现快速导入数据(oracle 导入 数据)
- 实现快速数据持久化往Redis存储进军(往redis存储)
- MySQL高效读取轻松实现一秒读取多次数据(mysql一秒读几次)
- MySQL轻松实现一秒插入万条数据(MySQL一秒插入条)
- 实现oracle亿级数据迁移的突破性方案(oracle亿级数据迁移)
- Ruby快速操控Redis实现数据存储(ruby 操作redis)
- 异地实现Redis集群数据同步(redis集群异地同步)
- Oracle表格数据导入实现不同表之间的无缝衔接(oracle不同表导入)
- js脚本实现数据去重