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() 方法。