是否有mysql++提供的API调用来获取结果返回的行数?
我的代码结构如下:
// ...
Query q = conn.query(queryString);
if(mysqlpp::UseQueryResult res = query.use()){
// some code
while(mysqlpp::Row row = res.fetch_row()){
}
}如果一个函数返回结果的行数,我前面的问题这里将很容易解决。我可以使用它来分配这个大小的内存,并在逐行迭代时填写。
发布于 2014-02-28 17:08:36
如果有人遇到这种情况:我引用用户手册的话
检索结果集的最直接方法是使用Query::store()。这将返回一个从std::StoreQueryResult派生的StoreQueryResult对象,使它成为一个随机访问的行容器。反过来,每个Row对象就像String对象的一个std::向量,结果集中的每个字段都有一个。因此,您可以将result[1][4]**.看作一个二维数组:只需简单地说,就可以得到第2行的第5个字段。还可以按字段名访问行元素,如:** 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;https://stackoverflow.com/questions/22087618
复制相似问题