0

Firebird (ドライバー ibpp) を使用する C++ コードがあり、PostgreSQL に変換する必要があります (pqxx が使用されます)。変更する必要がある主なファイルはこれです。始めましたが、今は苦労しています。

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 の一部のコードを書き直しました。ここで確認できます。では、このフラグメントを手伝ってもらえますか?

私は SQL を使い始めたばかりで、誰かが ibpp コードがどのように機能するかを説明してくれれば、それは素晴らしいことです。そして、大きな pqxx-examples のリンクをいくつか残しておけば、それは素晴らしいことです。

4

1 に答える 1

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));
}

ここでは切り捨てられているため、クエリはもちろん完了する必要があります。

于 2016-08-19T13:17:51.413 に答える