万一有人遇到这种情况:我引用用户手册:
检索结果集最直接的方法是使用 Query::store()。这将返回一个 StoreQueryResult 对象,该对象派生自 std::vector,使其成为 Rows 的随机访问容器。反过来,每个 Row 对象就像一个 std::vector 的 String 对象,一个用于结果集中的每个字段。因此,您可以将 StoreQueryResult 视为一个二维数组:您可以通过简单地说 . 来获取第 2 行的第 5 个字段
result[1][4]
。您还可以按字段名称访问行元素,如下所示:result[2]["price"]
.
和
处理查询结果的一种不太直接的方法是使用 Query::use(),它返回一个 UseQueryResult 对象。此类的作用类似于 STL 输入迭代器,而不是 std::vector:您遍历结果集,一次处理一行,始终向前。你无法在结果集中四处寻找,也无法知道该集中有多少结果,直到找到结尾。为了弥补这种不便,您可以获得更好的内存效率,因为不需要将整个结果集存储在 RAM 中。当您需要大型结果集时,这非常有用。
在这里找到一个建议:http : //lists.mysql.com/plusplus/9047
是使用 COUNT(*) 查询并获取该结果,然后再次使用 Query.use。为了避免计数不一致,可以将两个查询包装在一个事务中,如下所示:
START TRANSACTION;
BEGIN;
SELECT COUNT(*) FROM myTable;
SELECT * FROM myTable;
COMMIT;