public class Recordset.BatchEditor
extends java.lang.Object
支持添加、删除和修改。
纯属性数据集不支持批量更新。
public void recordBatchTest() { // 假设打开一个工作空间 workspace 对象,工作空间中存在一个数据源 datasource 对象 // 从中取出名为“World”的矢量数据集 dataset_world DatasetVector dataset_world = (DatasetVector) datasets.get("World"); // 通过模板 dataset_world 创建名为“example”的矢量数据集 dataset String name = "example"; DatasetVector dataset = (DatasetVector)datasets.createFromTemplate(name, dataset_world); //获取记录集 Recordset recordset_world = dataset_world.getRecordset(false, CursorType.STATIC); Recordset recordset = dataset.getRecordset(false, CursorType.DYNAMIC); // 获得记录集对应的批量更新对象 BatchEditor editor = recordset.getBatch(); // 设置批量更新每次提交的记录数目 editor.setMaxRecordCount(50); // 从 World 数据集中读取几何对象和字段值,批量更新到 example 数据集中 editor.begin(); while (!recordset_world.isEOF()) { Geometry geometry = recordset_world.getGeometry(); java.util.Map map = new java.util.HashMap(); FieldInfos fieldInfos = recordset_world.getFieldInfos(); for (int i = 0; i < fieldInfos.getCount(); i++) { FieldInfo fieldInfo = fieldInfos.get(i); if (!fieldInfo.getName().equalsIgnoreCase("SMID")) map.put(fieldInfo.getName(), recordset_world.getFieldValue(fieldInfo.getName())); } recordset.addNew(geometry, map); geometry.dispose(); recordset_world.moveNext(); } // 批量操作统一提交 editor.update(); // 释放记录集 recordset_world.dispose(); recordset.dispose(); }
限定符和类型 | 方法和说明 |
---|---|
void |
begin()
设置批量更新操作开始。
|
int |
getMaxRecordCount()
返回批量更新操作结果自动提交的最大记录数。
|
void |
setMaxRecordCount(int value)
设置批量更新操作结果提交的最大记录数,当所有需要更新的记录批量更新完成后,在提交更新结果时,如果更新的记录数超过了这个最大记录数时,系统将分批提交更新的结果,即每次提交最大记录数目个记录,直到所有的更新记录都提交完毕。
|
void |
update()
批量更新操作的统一提交。
|
public int getMaxRecordCount()
BatchEditor
类的 update()
方法,进行提交。另外,如果更新的记录数没有达到所设置的最大记录数,那么,需要调用 BatchEditor
类的 update()
方法,显式提交。用户可以在任何需要的时候调用 BatchEditor
类的 update()
方法显式提交所作的更新。
注意:getMaxRecordCount()
方法的默认值为1024,setMaxRecordCount()
方法必须在调用 BatchEditor.begin()
方法前调用,否则会抛出异常。
public void setMaxRecordCount(int value)
value
- 批量更新操作结果提交的最大记录数。public void begin()
public void update()
调用该方法后,之前进行的批量更新操作才会生效,同时更新状态将变为单条更新,如果需要之后的操作批量进行,还需再次调用 BatchEditor.begin()
方法。