我想要做这样的事情如何将查询结果传递给函数?
function A(){
session database_handler(....);
result res = database_handler << "SELECT ....";
functionB(res);
}
又该functionB的参数是什么?
将它作为指针传递不起作用,无论如何。
感谢
我想要做这样的事情如何将查询结果传递给函数?
function A(){
session database_handler(....);
result res = database_handler << "SELECT ....";
functionB(res);
}
又该functionB的参数是什么?
将它作为指针传递不起作用,无论如何。
感谢
您可以安全地复制cppdb::result
,但你可以遍历它只有在一个位置。即cppdb::result
持有引用(计算)结果对象,所以如果你遍历在functionB
行,你不能对他们在迭代functionA
所以你可以放心地定义
void functionB(cppdb::result res);
但是这将是在迭代方面相同
void functionB(cppdb::result &res);
另外最后一个更快,因为它不涉及引用计数开销。
一个简单的方法是创建一个类似于结果集的结构。 填充该结构并将结构指针传递给函数。
其他方法是声明你的功能functionB(结果RES),即它接受型结果的参数,然后从“资源”提取查询结果
第二种方法是我正在使用的,但我在functionB内犯了一个错误。这是解决,谢谢! – nico
“它不起作用”不是一个非常准确的描述。 – us2012
这是真的,但我不确定发生了什么(可能是空副本),所以我更喜欢避免详细信息,也因为我认为对于使用cppdb的人来说这是一个简单的问题。 – nico
API文档说复制了引用,但数据不是。尽管如此,在'functionB'中发生的数据应该在那里,'res'只会在'A()'末尾超出范围。当你在'A()'中检查时,你确定'res'中有数据吗? – us2012