C++ mysql++(mysqlpp):如何通过UseQueryResult使用fetch_row在迭代之前获取结果中的行数

C++ mysql++(mysqlpp):如何通过UseQueryResult使用fetch_row在迭代之前获取结果中的行数,c++,mysql++,C++,Mysql++,mysql++是否提供了API调用来获取结果返回的行数 我的代码结构如下: // ... Query q = conn.query(queryString); if(mysqlpp::UseQueryResult res = query.use()){ // some code while(mysqlpp::Row row = res.fetch_row()){ } } START TRANSACTION; BEGIN; SELECT COUNT(*) FROM m

mysql++是否提供了API调用来获取结果返回的行数

我的代码结构如下:

// ...
Query q = conn.query(queryString);
if(mysqlpp::UseQueryResult res = query.use()){
    // some code

   while(mysqlpp::Row row = res.fetch_row()){


   }
}
START TRANSACTION;
BEGIN;

SELECT COUNT(*) FROM myTable;

SELECT * FROM myTable;

COMMIT;

如果使用返回结果行数的函数,我前面的问题将很容易解决。我可以使用它来分配该大小的内存,并在逐行迭代时进行填充。

如果有人遇到这种情况: 我引述:

检索结果集最直接的方法是使用Query::store。这将返回一个StoreQueryResult对象, 它派生自std::vector,使其成为行的随机访问容器。反过来 每个行对象就像字符串对象的std::vector,结果集中的每个字段对应一个。因此,你可以 将StoreQueryResult视为二维数组:只需简单地说 结果[1][4]。您还可以按字段名访问行元素,如下所示:result[2][price]

处理查询结果的一种不太直接的方法是使用query::use,它返回一个UseQueryResult对象。 该类的作用类似于STL输入迭代器,而不是std::vector:您可以遍历结果集处理 每次一排,总是向前走。你不能在结果集中四处寻找,也不知道有多少 结果在集合中,直到找到结束。为了弥补这些不便,您可以获得更好的内存效率, 因为整个结果集不需要存储在RAM中。当您需要大型结果集时,这非常有用

一项建议发现:

是使用COUNT*查询并获取该结果,然后再次使用query.use。为了避免计数不一致,可以将两个查询包装在一个事务中,如下所示:

// ...
Query q = conn.query(queryString);
if(mysqlpp::UseQueryResult res = query.use()){
    // some code

   while(mysqlpp::Row row = res.fetch_row()){


   }
}
START TRANSACTION;
BEGIN;

SELECT COUNT(*) FROM myTable;

SELECT * FROM myTable;

COMMIT;