mysql++(mysqlpp):如何在迭代之前通过UseQueryResult使用fetch_row获取结果中的行数
mysql++ (mysqlpp): how to get number of rows in result prior to iteration using fetch_row through UseQueryResult
是否有mysql++提供的API调用来获取结果返回的行数?
我的代码结构如下:
// ...
Query q = conn.query(queryString);
if(mysqlpp::UseQueryResult res = query.use()){
// some code
while(mysqlpp::Row row = res.fetch_row()){
}
}
如果函数返回结果的行数,那么我前面的问题就很容易解决了。我可以使用它来分配该大小的内存,并在逐行迭代时填充。
如果有人遇到这种情况:我引用用户手册:
检索结果集最直接的方法是使用Query::store()。这返回一个StoreQueryResult对象,它派生自std::vector,使其成为Rows的随机访问容器。反过来每个Row对象就像String对象的std::向量,结果集中的每个字段都有一个。因此,您可以将StoreQueryResult视为二维数组:只需简单地说CCD_ 1。您还可以按字段名称访问行元素,如以下所示: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;
相关文章:
- 如何对存储为"Compressed Sparse Row"的矩阵进行稀疏矩阵索引?
- OpenCV Rect x 和 y 表示 (column,row) 或 (row,column)
- C++有"not equal compare and exchange"或"fetch add on not equal"吗?
- 如何在qt中修复"No query Unable to fetch row"
- 函数应该按 (row,col) 或 (col,row) 顺序接受/返回值吗?
- i(row) 和 j(col) 是什么意思?
- Qt应用程序中的"No query Unable to fetch row"
- Fetch API 使用 Electron 使用非 HTTP-Scheme,但不使用 CEF
- OpenCV Mat::row assignment
- 使用 Git init、fetch 和 checkout 克隆 Git 存储库
- 在我提供的此示例中,如何将2维std ::向量的逻辑更改为具有向量[row] [col] [col] [col] [co
- QVBoxLayout row size
- 如何检查窗口中 Row 的长度或宽度是否大于其父窗口C++的宽度
- | 9 |错误:非静态数据成员'matrix :: row'| 9 |错误:数组绑定不是在']']'令牌|之前的整数常数
- ld:对于架构x86_64 row :: AddColumn找不到的符号
- C 读取魔术方形检查器的Console Row中的输入
- 什么是 grey.cols-1 和 grey.row -1,有两个 for 循环
- 包含从 mysql row[x] 构建的固定长度数组的向量
- SOCI 行集<row>奇怪错误
- C++ MySQL Fetch Row