Index: pgconnection.cc =================================================================== RCS file: /cvsroot/pgsql/src/interfaces/libpq++/pgconnection.cc,v retrieving revision 1.14 diff -c -r1.14 pgconnection.cc *** pgconnection.cc 15 Jun 2002 18:49:29 -0000 1.14 --- pgconnection.cc 15 Jun 2002 19:05:11 -0000 *************** *** 1,19 **** /*------------------------------------------------------------------------- ! * ! * FILE ! * pgconnection.cc ! * ! * DESCRIPTION ! * implementation of the PgConnection class. ! * PgConnection encapsulates a frontend to backend connection ! * ! * Copyright (c) 1994, Regents of the University of California ! * ! * IDENTIFICATION ! * $Header: /cvsroot/pgsql/src/interfaces/libpq++/pgconnection.cc,v 1.14 2002/06/15 18:49:29 momjian Exp $ ! * ! *------------------------------------------------------------------------- ! */ #include "pgconnection.h" --- 1,19 ---- /*------------------------------------------------------------------------- ! * ! * FILE ! * pgconnection.cc ! * ! * DESCRIPTION ! * implementation of the PgConnection class. ! * PgConnection encapsulates a frontend to backend connection ! * ! * Copyright (c) 1994, Regents of the University of California ! * ! * IDENTIFICATION ! * $Header: /cvsroot/pgsql/src/interfaces/libpq++/pgconnection.cc,v 1.14 2002/06/15 18:49:29 momjian Exp $ ! * ! *------------------------------------------------------------------------- ! */ #include "pgconnection.h" *************** *** 28,71 **** // **************************************************************** // default constructor -- initialize everything PgConnection::PgConnection() ! : pgConn(NULL), pgResult(NULL), pgCloseConnection(false) {} // constructor -- checks environment variable for database name // Now uses PQconnectdb PgConnection::PgConnection(const char* conninfo) ! : pgConn(NULL), pgResult(NULL), pgCloseConnection(true) { ! // Connect to the database ! Connect(conninfo); } // destructor - closes down the connection and cleanup PgConnection::~PgConnection() { ! // Close the connection only if needed ! // This feature will most probably be used by the derived classes that ! // need not close the connection after they are destructed. ! CloseConnection(); } // PgConnection::CloseConnection() // close down the connection if there is one ! void PgConnection::CloseConnection() { ! // if the connection is open, close it first ! if (pgCloseConnection) { ! if (pgResult) ! PQclear(pgResult); ! pgResult = NULL; ! if (pgConn) ! PQfinish(pgConn); ! pgConn = NULL; ! pgCloseConnection = false; ! } } --- 28,73 ---- // **************************************************************** // default constructor -- initialize everything PgConnection::PgConnection() ! : pgConn(NULL), pgResult(NULL), pgCloseConnection(false) {} // constructor -- checks environment variable for database name // Now uses PQconnectdb + PgConnection::PgConnection(const char* conninfo) ! : pgConn(NULL), pgResult(NULL), pgCloseConnection(true) { ! // Connect to the database ! Connect(conninfo); } // destructor - closes down the connection and cleanup PgConnection::~PgConnection() { ! // Close the connection only if needed ! // This feature will most probably be used by the derived classes that ! // need not close the connection after they are destructed. ! CloseConnection(); } // PgConnection::CloseConnection() // close down the connection if there is one ! void PgConnection::CloseConnection() { ! // if the connection is open, close it first ! if (pgCloseConnection) ! { ! if (pgResult) ! PQclear(pgResult); ! pgResult = NULL; ! if (pgConn) ! PQfinish(pgConn); ! pgConn = NULL; ! pgCloseConnection = false; ! } } *************** *** 73,112 **** // establish a connection to a backend ConnStatusType PgConnection::Connect(const char conninfo[]) { ! // if the connection is open, close it first ! CloseConnection(); ! // Connect to the database ! pgConn = PQconnectdb(conninfo); ! // Now we have a connection we must close (even if it's bad!) ! pgCloseConnection = true; ! ! // Status will return either CONNECTION_OK or CONNECTION_BAD ! return Status(); } // PgConnection::status -- return connection or result status ConnStatusType PgConnection::Status() const { ! return PQstatus(pgConn); } // PgConnection::exec -- send a query to the backend ExecStatusType PgConnection::Exec(const char* query) { ! // Clear the result stucture if needed ! if (pgResult) ! PQclear(pgResult); ! ! // Execute the given query ! pgResult = PQexec(pgConn, query); ! ! // Return the status ! if (pgResult) ! return PQresultStatus(pgResult); ! else ! return PGRES_FATAL_ERROR; } // Return true if the Postgres command was executed OK --- 75,114 ---- // establish a connection to a backend ConnStatusType PgConnection::Connect(const char conninfo[]) { ! // if the connection is open, close it first ! CloseConnection(); ! ! // Connect to the database ! pgConn = PQconnectdb(conninfo); ! // Now we have a connection we must close (even if it's bad!) ! pgCloseConnection = true; ! // Status will return either CONNECTION_OK or CONNECTION_BAD ! return Status(); } // PgConnection::status -- return connection or result status ConnStatusType PgConnection::Status() const { ! return PQstatus(pgConn); } // PgConnection::exec -- send a query to the backend ExecStatusType PgConnection::Exec(const char* query) { ! // Clear the result stucture if needed ! if (pgResult) ! PQclear(pgResult); ! ! // Execute the given query ! pgResult = PQexec(pgConn, query); ! ! // Return the status ! if (pgResult) ! return PQresultStatus(pgResult); ! else ! return PGRES_FATAL_ERROR; } // Return true if the Postgres command was executed OK *************** *** 125,158 **** // PgConnection::notifies() -- returns a notification from a list of unhandled notifications PGnotify* PgConnection::Notifies() { ! return PQnotifies(pgConn); } // From Integer To String Conversion Function string PgConnection::IntToString(int n) { ! char buffer [4*sizeof(n) + 2]; ! sprintf(buffer, "%d", n); ! return buffer; } bool PgConnection::ConnectionBad() const ! { ! return Status() == CONNECTION_BAD; } const char* PgConnection::ErrorMessage() const ! { ! return (const char *)PQerrorMessage(pgConn); } ! const char* PgConnection::DBName() const ! { ! return (const char *)PQdb(pgConn); } PQnoticeProcessor PgConnection::SetNoticeProcessor(PQnoticeProcessor proc, void *arg) { ! return PQsetNoticeProcessor(pgConn, proc, arg); } --- 127,160 ---- // PgConnection::notifies() -- returns a notification from a list of unhandled notifications PGnotify* PgConnection::Notifies() { ! return PQnotifies(pgConn); } // From Integer To String Conversion Function string PgConnection::IntToString(int n) { ! char buffer [4*sizeof(n) + 2]; ! sprintf(buffer, "%d", n); ! return buffer; } bool PgConnection::ConnectionBad() const ! { ! return Status() == CONNECTION_BAD; } const char* PgConnection::ErrorMessage() const ! { ! return (const char *)PQerrorMessage(pgConn); } ! const char* PgConnection::DBName() const ! { ! return (const char *)PQdb(pgConn); } PQnoticeProcessor PgConnection::SetNoticeProcessor(PQnoticeProcessor proc, void *arg) { ! return PQsetNoticeProcessor(pgConn, proc, arg); }