try
{
pqxx::connection main_conn ( constr );
pqxx::nontransaction prew ( main_conn,"tp" );
ostringstream prequery ( "" );
prequery<<"select id_type from event_type where code="<<-1<<" and is_err = "<<"false";
r=prew.exec ( prequery.str() );
int id_type=atol ( r[0][0].c_str() );
cout<<id_type<<endl;
pqxx::work w ( main_conn,"uth" );
ostringstream query ( "" );
query<<"select * from event "; //тут будет другой запрос.
w.exec ( query.str() );
// cout<<r[0][0].c_str();
w.commit();
}
catch ( ... )
{
cout<<"database exception";
}
c++. многоразовое использование соединения с БД в pqxx
при попытке повторно использовать pqxx::connection и pqxx::work программа уходит в ожидание выхода из
pqxx::work::exec намертво.
код:
Код:
как с таким бороться?
Первая часть инициализирует коннект к базе (объекты connection и work). Заведи глобальные переменные и проинициализируй их где-нибудь в начале программы.
Вторая часть использует уже подготовленный объект work для выполнения запросов.
В конце работы не забываем корректно завершить соединение с базой.