2016-08-19 9 views
0

У меня есть код на C++, который использует Firebird (драйвер ibpp), и мне нужно сделать преобразование в PostgreSQL (используется pqxx). Основной файл, который мне нужно изменить, - this one. Я начал, но теперь у меня есть трудности.Преобразование из ibpp в pqxx в проекте C++

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-примерами, было бы здорово.

ответ

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

Запрос конечно должен быть завершен, так как он обрезается здесь.

 Смежные вопросы

  • Нет связанных вопросов^_^