Pointers 如何将查询结果传递给函数?

Pointers 如何将查询结果传递给函数?,pointers,cppcms,Pointers,Cppcms,我想做这样的事情 function A(){ session database_handler(....); result res = database_handler << "SELECT ...."; functionB(res); } 函数A(){ 会话数据库_处理程序(..); result res=database_handler一种简单的方法是创建一个类似于结果集的结构。 填充该结构并将结构指针传递给函数 另一种方法是将函数声明为functi

我想做这样的事情

function A(){
    session database_handler(....);

    result res = database_handler << "SELECT ....";

    functionB(res);
}
函数A(){
会话数据库_处理程序(..);

result res=database_handler一种简单的方法是创建一个类似于结果集的结构。 填充该结构并将结构指针传递给函数


另一种方法是将函数声明为functionB(result res),即它接受result类型的参数,然后从“res”提取查询结果。您可以安全地复制
cppdb::result
,但只能在一个位置对其进行迭代。即
cppdb::result
保存引用(已计数)因此,如果您在
functionB
中迭代行,则无法在
function
中迭代行

因此,您可以安全地定义

void functionB(cppdb::result res);
但是,就迭代而言,它与

void functionB(cppdb::result &res);

最后一个更快,因为它不涉及引用计数开销。

“它不起作用”不是一个非常准确的描述。这是真的,但我不确定会发生什么(可能制作了一个空副本),因此我倾向于避免详细信息,也因为我认为这对于使用cppdb的人来说是一个简单的问题。API文档说引用是复制的,但数据不是。尽管如此,在
functionB
中发生的事情中,数据应该在那里,
res
只在
A()末尾超出范围
。当您在
A()
中检查时,是否确保
res
中有数据?我终于找到了错误。我使用相同的函数b对多个结果进行迭代,就像只对一个结果进行迭代一样。当我考虑到只有一个结果的情况时,我编写
if(!result.next())//没有结果
。那句话使指针前进,使抓取失败。谢谢你的帮助。你是如何链接的?你介意帮忙吗?第二种方法是我正在使用的方法,但我在函数B中犯了一个错误。问题解决了,谢谢!