该类作为Recordset类的内部类,主要提供记录的批量更新的功能。

目前对批量更新功能的支持包括以下几点:

1.批量更新操作包括批量添加、批量更改、批量删除。

2.支持对 EngineType 中的可写文件型引擎和数据库型引擎类型数据源进行批量更新。

3.支持索引的自动维护,即当被更新的数据集有索引时,添加记录或者移动空间对象等操作会自动维护索引,不需要重新创建索引。

命名空间:  SuperMap.Data
程序集:  SuperMap.Data (in SuperMap.Data)
版本: dll

语法

C#
public class BatchEditor

示例

以下3段代码分别示范如何进行批量修改、批量删除和批量添加。

假设打开一个工作空间workspace对象,工作空间中包含名为 World 的矢量数据集 dataset_world。

CopyC#
public void RecordsetBatchModify(Workspace workspace)
{
    // 获取数据集
    DatasetVector dataset_world = workspace.Datasources[0].Datasets["World"] as DatasetVector;
    c
    // 获取记录集
    Recordset recordset = dataset_world.GetRecordset(false, CursorType.Dynamic);

    // 获得记录集对应的批量更新对象
    Recordset.BatchEditor editor = recordset.Batch;

    // 设置批量更新每次提交的记录数目
    editor.MaxRecordCount = 5;

    // 开始批量修改,将 World 数据集中 Name 字段的字段值修改为序号
    editor.Begin();

    for (int i = 0; i<recordset.RecordCount; i++)
    {
        recordset.MoveTo(i);
        recordset.SetFieldValue("NAME", (object)i.ToString());
    }

    // 批量操作统一提交
    editor.Update();

    // 释放记录集
    recordset.Dispose();
}c
CopyC#
public void RecordsetBatchDelete(Workspace workspace)
{
    // 获取数据集
    DatasetVector dataset_world = workspace.Datasources[0].Datasets["World"] as DatasetVector;

    // 获取记录集
    Recordset recordset = dataset_world.GetRecordset(false, CursorType.Dynamic);

    // 获得记录集对应的批量更新对象
    Recordset.BatchEditor editor = recordset.Batch;

    // 设置批量更新每次提交的记录数目
    editor.MaxRecordCount = 5;

    // 开始批量删除,将 World 数据集的记录批量删除
    editor.Begin();

    for (int i = 0; i<recordset.RecordCount; i++)
    {
        recordset.MoveTo(i);
        recordset.Delete();
    }

    // 批量操作统一提交
    editor.Update();

    // 释放记录集
    recordset.Dispose();
}
CopyC#
public void RecordsetBatchAdd(Workspace workspace)
{
    // 获取数据集
    DatasetVector dataset_world = workspace.Datasources[0].Datasets["World"] as DatasetVector;

    // 通过模板 dataset_world 创建名为 example 的矢量数据集 dataset
    String name = "example";
    DatasetVector dataset = workspace.Datasources[0].Datasets.CreateFromTemplate(name, dataset_world) as DatasetVector;


    // 获取记录集
    Recordset recordset = dataset_world.GetRecordset(false, CursorType.Dynamic);
    Recordset recordset_example = dataset.GetRecordset(false, CursorType.Static);

    // 获得记录集对应的批量更新对象
    Recordset.BatchEditor editor = recordset.Batch;

    // 设置批量更新每次提交的记录数目
    editor.MaxRecordCount = 5;

    // 开始批量添加,将 example 数据集每条记录对应的几何对象添加到 World 数据集中
    editor.Begin();

    for (int i = 0; i<recordset_example.RecordCount; i++)
    {
        recordset_example.MoveTo(i);
        Geometry geo = recordset_example.GetGeometry();
        recordset.AddNew(geo);
    }

    // 批量操作统一提交
    editor.Update();

    // 释放记录集
    recordset_world.Dispose();
    recordset.Dispose();
}

继承层次

System..::.Object
  SuperMap.Data..::.Recordset..::.BatchEditor

版本信息

SuperMap iObjects .NET


请参见