LINUX.ORG.RU

[libpqxx]многоразовое использование соединения с БД


0

0

никак не могу разоброаться, как повторно использовать использовать соединение с БД. пишу так:

  pqxx::result r;
  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";
  }
причем все останавливается на w.exec(). попытка писать каждый запрос в своем try дает такой же эффект.

подскажите пожалуйста как с этим бороться?


либо фетчить все полученные записи, либо делать а-ля резет для стейтмента. вобщем смотри апи на сей счет. я дословно названия ф-ций не знаю, просто предполагаю. под ПГ уже сто лет не писал.

вообще, для меня удивительно видеть, что ПГ не умеет мульти стейтмент (это когда в рамках одного коннекта у меня несколько открытых курсоров).... вродь не должно быть такого, субд вродь нормальная. У мускуля - да... но мускуль - тупая недосубд, больше напоминающая записную книжку с поддержкой сиквела.

Deleted
()
Ответ на: комментарий от Deleted

извиняюсь за панику. все дело было в другом. перебрасывало в catch и пока не написал из него явный return, он не выпускал. gcc version 4.3.2 (Debian 4.3.2-1.1)

iero
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.