如何解决如何使用 pqxx 6.4 将子复合部分作为行获取?
我尝试在生成代码中添加 C++ 对象的 SLQ 表示。 每个 c++ 类都有一个构建器,负责从 sql 数据库保存/恢复对象。
SELECT With_ext_key.id,With_ext_key.name3,(k1_table.id,k1_table.name1,k1_table.name2,k1_table.re) as k1,(k2_table.id,k2_table.name1,k2_table.name2,k2_table.re) as k2
FROM With_ext_key
INNER JOIN With_key AS k1_table ON k1_table.id = With_ext_key.k1
INNER JOIN With_key AS k2_table ON k2_table.id = With_ext_key.k2
我得到的结果看起来像。
1|fn1|(5,"name A","name B",0.2)|(6,"name C","name D",0.5)
我的 C++ 代码看起来像。
class With_key {
void build_from_sql(pqxx::row d);
...
};
class With_ext_key {
void build_from_sql(pqxx::row d);
...
};
void With_ext_key::build_from_sql(pqxx::row d) {
this->id = d["id"].as<int>();
this->name3 = d["name3"].as<std::string>();
this->k1.build_from_sql(d[k1].as<pqxx::row>()); // this line failled i cannot access to sub element.
}
d[k1] 是一个字段,我没有找到任何方法来探索这个子数据作为一行。 我刚发现复合系统,但这种方法破坏了公共/私有或重复代码。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。