在C ++项目中从ibpp转换为pqxx

时间:2016-08-19 12:36:56

标签: c++ postgresql firebird libpqxx

我有一个使用Firebird(驱动程序ibpp)的C ++代码,我需要转换为PostgreSQL(使用pqxx)。我需要更改的主文件是this one。我开始了,但现在我遇到了困难。

while (st->Fetch())
{
    st->Get(1, tName);
    st->Get(2, fieldName);
    st->Get(3, fieldType);

    if (tName != tableName)
        continue;

    result.push_back(DbField(fieldName, fieldType, ""));
 } 

我不知道如何使用pqxx重写它。我在pqxx中重写了一段代码,你可以看到它here。 你可以帮我解决这个片段吗?

我刚开始使用SQL,如果有人能解释我ibpp代码是如何工作的,那可能会很棒。如果你留下一些大pqxx例子的链接,那就太好了。

1 个答案:

答案 0 :(得分:0)

IBPP片段执行查询sql1,并且给定的循环遍历生成的表行,并将它们全部推送到result,这可能是一种向量。

模拟Postgres代码将是

vector<tuple<string, string, string>> result_set;
pqxx::work txn(*conn);
pqxx::result res = txn.exec("SELECT TRIM(RL.RDB$RELATION_NAME), TRIM(FR.RDB$FIELD_NAME), FS.RDB$FIELD_TYPE ...");
for (unsigned i = 0; i < res.size(); ++i)
{
    string first = res[i][0].as<string>("");
    string second = res[i][1].as<string>("");
    string third = res[i][2].as<string>("");
    result_set.push_back(make_tuple(provider, oper, priority));
}

当然应该完成查询,因为它在这里被截断了。