在 C++ 项目中从 ibpp 到 pqxx 的转换
Conversion from ibpp to pqxx in C++ project
我有一个使用 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-examples 的链接,那就太好了。
IBPP 片段执行查询 sql1
并且给定循环遍历结果 table 行并将它们全部推送到 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));
}
查询当然应该完成,因为它在这里被截断了。
我有一个使用 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-examples 的链接,那就太好了。
IBPP 片段执行查询 sql1
并且给定循环遍历结果 table 行并将它们全部推送到 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));
}
查询当然应该完成,因为它在这里被截断了。