您的位置:首页 > Web前端

在向Table、FeatureClass 中添加记录的时候有几种可供选用的插入方

2014-12-09 21:23 253 查看
个人补充:字段必须有一个是OID 类型的。

内容摘要

在向Table、FeatureClass 中添加记录的时候有几种可供选用的插入方法

他们在不同的使用环境中效率不同……
过程描述
-------------

1 Store 方法

使用IRow、IFeature 的Store

由ITable 或 IFeatureClass 的 CreateRow() CreateFeature() 方法先创建对象经赋值操作后调用 Store

此方法在各种环境中速度均较低 但其获得的信息相对最全 适用于经UI交互产生的数据对象

a)在CreateRow() 时进行一次数据库访问 [insert]

b)创建之后已Row中已返回 OID 值

c)其他字段赋值之后调用Store 进行第二次数据库访问 [updata] 此时激发 Row对象的 onChange等事件调用

--------------

2 WriteRow方法

使用ITableWrite.WriteRow() 或 IFeatureClassWrite.WriteFeature()

由ITable 或 IFeatureClass 的 CreateRow() CreateFeature() 方法先创建对象

经赋值操作后调用 ITable.WriteRow() 或 IFeatureClass.WriteFeature()

此方法调用ITableWrite这类较底层的接口 区别在于在写入数据时不会激发相应事件

在对象不影响网络拓扑结构的前提下写入几何网络图层数据速度较快

a)在CreateRow() 时进行一次数据库访问 [insert]

b)创建之后已Row中已返回 OID 值

c)其他字段赋值之后调用Store 进行第二次数据库访问 [updata] 此时不激发事件

-----------------

3 Insert Buffer

使用ITable.CreateRowBuffer() 或 IFeatureClass.CreateFeatureBuffer()创建内存对象

由IFeatureCursor.InsertFeature()写入只访问一次数据库速度较快 但是内存对象在写入前

OID=-1 适用于批量写入简单要素

a)在CreateRowBuffer() 创建内存对象

b)创建之后已Row中OID = -1

c)其他字段赋值之后调用ICursor.Insert() 进行一次数据库插入 此时不会相应事件
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: