往Personal GDB或SDE GDB中写入要素记录是一件非常简单的事情,但似乎太多的情况下,写入数据的用例过于简单,使得许多代码问题、特别是ArcSDE本身的问题和Error 无法暴露,很多人也从未意识到类似的问题。我最近正在做类似的工作,代码编写似乎不难,但测试就要了命了,发现的问题数不胜数,头痛不已。
1.插入记录的效率问题
向要素类中插入记录有两种方式,一是IFeature.Store,另一个是IFeatureCursor.Insert(IFeatureBuffer)和IFeatureCursor.Flush方法,显而易见的,后一种方法由于使用了缓存,速度上比前者快。
2.往MDB和SDE要素类中插入记录
这两种类型的要素类在往其中插入数据时不一定需要使用IWorkspaceEdit接口来开启和关闭一个Session,但是,如果SDE的要素类被注册为 version,这个接口就必须使用了,否则CPU会高达100%,并会爆出“the operation in invalid on a closed state”的错误。而使用了有版本的SDE要素类,我遇到了许多令人崩溃的SDE ERROR,比如FDO_E_SE_DB_IO_ERROR、FDO_E_SE_OUT_OF_LOCKS等等。
3.将多个MDB导入一个MDB的时候,如果使用了IWorkspaceEdit接口,会出现某几个图层无法用ArcMap或ArcCatalog打开的情况,即以打开程序就崩溃,而不是用该接口,其它相同的代码做的加载过程,一切正常。
4. 将两个或以上MDB导入一个MDB时候,到第二个MDB,很可能发生“**_SHAPE_INDEX被占用”的情况,这是因为写.NET平台代码时,你遍历或插入数据的游标cursor未释放的缘故。pFeatureCursor=null;并不会将对象从内存中清除,这是因为.NET平台是由 Runtime来收集垃圾的,不像VC或VB那样能直接销毁COM对象,此时你应该使用 System.Runtime.InteropServices.Marshal.ReleaseComObject方法来强制释放COM对象,以解除对某个表的独占状态。
分享到:
相关推荐
专门为现场审计实施系统AO2011批量导出底稿证据的小工具,亲测好用!
AO工艺处理城市污水毕业论文.doc
AO工艺设计10万方污水处理厂毕业设计论文说明书[全套CAD图纸].doc
新中大解压tx文件 现场审计实施系统工具 AO新中大备份批量解压缩
AO3415中文资料AO3415中文资料
15万吨天城市生活污水处理厂-AO工艺毕业设计毕业设计说明书
c#+AO开发代码c#+AO开发代码c#+AO开发代码c#+AO开发代码c#+AO开发代码c#+AO开发代码c#+AO开发代码c#+AO开发代码c#+AO开发代码c#+AO开发代码c#+AO开发代码c#+AO开发代码c#+AO开发代码c#+AO开发代码c#+AO开发代码c#+AO...
AO3416中文资料AO3416中文资料
澳泰自动化AO910-AO910W压力变送器pdf,澳泰自动化AO910-AO910W压力变送器:AO910 系列扩散硅压力变送器采用具有国际先进水平的传感器,配合高精度电子元件,经严格的工艺过程装配而成。它采用无中介液的压力测量技术...
AO开发入门--AO二次开发入门好教程,真的特别号哦
AO学习资料 AO学习资料 AO学习资料
一键渲染通道图 ao图插件 3dmax插件
基于AO的ArcGIS二次开发——AO程序设计入门,
烘焙AO
AO开发10.2,针对江西理工大学兰小机的ao开发那本书
AO插件
The AO3400 uses advanced trench technology to provide excellent RDS(ON), low gate charge and operation with gate voltages as low as 2.5V. This device is suitable for use as a load switch or in PWM ...
AO系统中所有菜单 都包括在上面了哈 AO系统中所有菜单 都包括在上面了哈AO系统中所有菜单 都包括在上面了哈AO系统中所有菜单 都包括在上面了哈AO系统中所有菜单 都包括在上面了哈AO系统中所有菜单 都包括在上面了哈