From 8cd0ddcb32dac84d8fc613da70bcb0e66ea19962 Mon Sep 17 00:00:00 2001 From: arjen Date: Thu, 24 Mar 2011 10:21:43 +0000 Subject: [PATCH] Adjusted to new version of libpqxx. --- src/include/database.h | 38 +++++++++++++++++++++++++------------- src/lib/database.cpp | 18 ++++++++++++------ 2 files changed, 37 insertions(+), 19 deletions(-) diff --git a/src/include/database.h b/src/include/database.h index 1d94e64..60f3796 100644 --- a/src/include/database.h +++ b/src/include/database.h @@ -8,7 +8,7 @@ *********************** ** FILE NAME : database.h ** SYSTEM NAME : -** VERSION NUMBER : $Revision: 1.11 $ +** VERSION NUMBER : $Revision: 1.12 $ ** ** DESCRIPTION : Classes to provide an abstract layer on the Gnucomo ** database. @@ -27,7 +27,10 @@ /***************************** $Log: database.h,v $ - Revision 1.11 2007-01-11 13:50:10 arjen + Revision 1.12 2011-03-24 10:21:43 arjen + Adjusted to new version of libpqxx. + + Revision 1.11 2007/01/11 13:50:10 arjen Experimental start of database OO abstraction layer. Revision 1.10 2003/12/04 10:39:36 arjen @@ -66,11 +69,11 @@ *****************************/ -/* static const char *RCSID = "$Id: database.h,v 1.11 2007-01-11 13:50:10 arjen Exp $"; */ +/* static const char *RCSID = "$Id: database.h,v 1.12 2011-03-24 10:21:43 arjen Exp $"; */ -#include -#include -#include +#include +#include +#include #include "gnucomo_config.h" /* @@ -92,10 +95,11 @@ class gnucomo_database { gnucomo_config *cfg; - pqxx::Connection *dbconn; - pqxx::Transaction *dbxact; + pqxx::connection *dbconn; + //pqxx::transaction *dbxact; + pqxx::work *dbxact; - pqxx::Result last_result; + pqxx::result last_result; public: @@ -130,23 +134,31 @@ public: int Query(String qry) { - - last_result = dbxact->Exec(qry); + try + { + last_result = dbxact->exec((char *)qry); #ifdef DEBUG std::cerr << "Query " << qry << " returned " << last_result.size() << " tuples.\n"; #endif + } + catch (const pqxx::pqxx_exception &e) + { + std::cerr << "Error in QUERY " << qry << ":\n"; + std::cerr << e.base().what() << std::endl; + } + return last_result.size(); } - pqxx::Result Result() + pqxx::result Result() { return last_result; } // The field value of a specific result. - String Field(pqxx::Result res, int tuple, const char *fieldname) + String Field(pqxx::result res, int tuple, const char *fieldname) { return String(res[tuple][fieldname].c_str()); } diff --git a/src/lib/database.cpp b/src/lib/database.cpp index fb497ec..c585712 100644 --- a/src/lib/database.cpp +++ b/src/lib/database.cpp @@ -8,7 +8,7 @@ *********************** ** FILE NAME : database.cpp ** SYSTEM NAME : Gnucomo - Gnu Computer Monitoring -** VERSION NUMBER : $Revision: 1.12 $ +** VERSION NUMBER : $Revision: 1.13 $ ** ** DESCRIPTION : Implementation of the gnucomo database classes ** @@ -26,7 +26,10 @@ /***************************** $Log: database.cpp,v $ - Revision 1.12 2003-12-22 10:28:26 arjen + Revision 1.13 2011-03-24 10:21:47 arjen + Adjusted to new version of libpqxx. + + Revision 1.12 2003/12/22 10:28:26 arjen Catch an exception if we can not setup a database transaction. Revision 1.11 2003/12/04 10:40:28 arjen @@ -67,10 +70,12 @@ *****************************/ -static const char *RCSID = "$Id: database.cpp,v 1.12 2003-12-22 10:28:26 arjen Exp $"; +static const char *RCSID = "$Id: database.cpp,v 1.13 2011-03-24 10:21:47 arjen Exp $"; #include +//#define DEBUG + #include "database.h" extern std::ostream *Log; @@ -98,7 +103,7 @@ gnucomo_database::gnucomo_database(gnucomo_config *c) { cfg = c; - dbconn = new pqxx::Connection(cfg->Database()); + dbconn = new pqxx::connection(cfg->Database()); if (!dbconn->is_open()) { @@ -110,7 +115,8 @@ gnucomo_database::gnucomo_database(gnucomo_config *c) { // Create the transaction object - dbxact = new pqxx::Transaction(*dbconn, "GnuCoMo"); + //dbxact = new pqxx::transaction(*dbconn, "GnuCoMo"); + dbxact = new pqxx::work(*dbconn, "GnuCoMo"); } catch (std::exception &e) { @@ -146,7 +152,7 @@ gnucomo_database::~gnucomo_database() { if (--gdb_refcount == 0 && dbconn != 0 && dbxact != 0) { - dbxact->Commit(); + dbxact->commit(); delete dbxact; dbxact = 0; delete dbconn; -- 2.11.0