com.supermap.data
类 Recordset.BatchEditor
- java.lang.Object
-
- com.supermap.data.Recordset.BatchEditor
-
- 封闭类:
- Recordset
public class Recordset.BatchEditor extends java.lang.Object
该类作为 Recordset 类的内部类,主要提供记录的批量更新的功能。支持添加、删除和修改。
纯属性数据集不支持批量更新。
- Example:
- 以下代码示范如何实现用批量更新进行数据集中几何对象和字段值的添加。
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()
批量更新操作的统一提交。
-
-
-
方法详细资料
-
getMaxRecordCount
public int getMaxRecordCount()
返回批量更新操作结果自动提交的最大记录数。当进行批量更新操作的过程中,如果更新完成的记录数等于 MaxRecordCount 属性值,并且开始了下一条记录的更新操作,将自动提交已经完成更新的最大记录数的记录,例如,如果待更新的记录数为200,最大记录数设置为100,那么,在更新的过程中,更新完成的记录数等于100,并且开始了第101条记录的更新,就自动提交完成更新的100条记录,因此,在该实例中,将有1次自动提交的过程,而剩下的100条记录,由于没有第201条记录,因此只能调用BatchEditor
类的update()
方法,进行提交。另外,如果更新的记录数没有达到所设置的最大记录数,那么,需要调用BatchEditor
类的update()
方法,显式提交。用户可以在任何需要的时候调用BatchEditor
类的update()
方法显式提交所作的更新。注意:
getMaxRecordCount()
方法的默认值为1024,setMaxRecordCount()
方法必须在调用BatchEditor.begin()
方法前调用,否则会抛出异常。- 返回:
- 批量更新操作结果提交的最大记录数。
-
setMaxRecordCount
public void setMaxRecordCount(int value)
设置批量更新操作结果提交的最大记录数,当所有需要更新的记录批量更新完成后,在提交更新结果时,如果更新的记录数超过了这个最大记录数时,系统将分批提交更新的结果,即每次提交最大记录数目个记录,直到所有的更新记录都提交完毕。例如,如果设定提交的最大记录数为1000,而需要更新的记录数为3800,那么批量更新记录后,在提交结果时,系统将分四次提交更新结果,即第一次提交1000条记录,第二次1000条,第三次1000条,第四次800条。- 参数:
value
- 批量更新操作结果提交的最大记录数。
-
begin
public void begin()
-
update
public void update()
批量更新操作的统一提交。调用该方法后,之前进行的批量更新操作才会生效,同时更新状态将变为单条更新,如果需要之后的操作批量进行,还需再次调用
BatchEditor.begin()
方法。
-
-