9.4 同时获取所有数据项

除了在 第 9.3 节“使用数据集” 中解释的 fetchOne() 使用模式外,该模式使应用程序能够逐个消费数据项,X DevAPI 还提供了一种使用 fetchAll() 的模式,该模式将数据集的所有数据项作为列表传递给应用程序。不同的 X DevAPI 实现使用编程语言的相应数据类型来表示列表。由于使用了不同的数据类型,因此支持使用语言的原生结构来访问列表元素。以下示例假设 test 模式存在,并且员工表存在于 myTable 中。

var myResult = myTable.select(['name', 'age']).
  where('name like :name').bind('name','L%').
  execute();

var myRows = myResult.fetchAll();

for (index in myRows){
  print (myRows[index].name + " is " + myRows[index].age + " years old.");
}

在混合使用 fetchOne()fetchAll() 从一个数据集中读取数据时,请记住,每次调用 fetchOne()fetchAll() 都会消费返回的数据项。消费过的项无法再次请求。例如,如果应用程序调用 fetchOne() 来获取数据集的第一个数据项,那么随后调用 fetchAll() 会返回第二个到最后一个数据项。第一个项不属于 fetchAll() 返回的数据项列表的一部分。类似地,在之前调用 fetchAll() 后再次为数据集调用 fetchAll() 时,第二次调用将返回一个空集合。

使用 fetchAll() 将强制连接器在将列表作为整体传递给应用程序之前在内存中构建所有项的列表。该列表的生命周期独立于生成它的数据集的生命周期。