2013-02-06 41 views
0

我想要做这样的事情如何将查询结果传递给函数?

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

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

    functionB(res); 
} 

又该functionB的参数是什么?

将它作为指针传递不起作用,无论如何。

感谢

+0

“它不起作用”不是一个非常准确的描述。 – us2012

+0

这是真的,但我不确定发生了什么(可能是空副本),所以我更喜欢避免详细信息,也因为我认为对于使用cppdb的人来说这是一个简单的问题。 – nico

+1

API文档说复制了引用,但数据不是。尽管如此,在'functionB'中发生的数据应该在那里,'res'只会在'A()'末尾超出范围。当你在'A()'中检查时,你确定'res'中有数据吗? – us2012

回答

1

您可以安全地复制cppdb::result,但你可以遍历它只有在一个位置。即cppdb::result持有引用(计算)结果对象,所以如果你遍历在functionB行,你不能对他们在迭代functionA

所以你可以放心地定义

void functionB(cppdb::result res); 

但是这将是在迭代方面相同

void functionB(cppdb::result &res); 

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

0

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

其他方法是声明你的功能functionB(结果RES),即它接受型结果的参数,然后从“资源”提取查询结果

+0

第二种方法是我正在使用的,但我在functionB内犯了一个错误。这是解决,谢谢! – nico

相关问题