summaryrefslogtreecommitdiff
path: root/src/interfaces/libpq++/pgconnection.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/interfaces/libpq++/pgconnection.h')
-rw-r--r--src/interfaces/libpq++/pgconnection.h75
1 files changed, 75 insertions, 0 deletions
diff --git a/src/interfaces/libpq++/pgconnection.h b/src/interfaces/libpq++/pgconnection.h
new file mode 100644
index 00000000000..125c9427a5c
--- /dev/null
+++ b/src/interfaces/libpq++/pgconnection.h
@@ -0,0 +1,75 @@
+/*-------------------------------------------------------------------------
+ *
+ * pgconnection.h
+ *
+ *
+ * DESCRIPTION
+ * Postgres Connection Class:
+ * Manage Postgres backend connection
+ *
+ * NOTES
+ * Currently under construction.
+ *
+ * Copyright (c) 1994, Regents of the University of California
+ *
+ *-------------------------------------------------------------------------
+ */
+
+#ifndef PGCONN_H
+#define PGCONN_H
+
+#include <stdio.h>
+#include "pgenv.h"
+
+extern "C" {
+#include "libpq-fe.h"
+}
+
+
+// ****************************************************************
+//
+// PgConnection - a connection made to a postgres backend
+//
+// ****************************************************************
+// This class contains all the information about the connection
+// to the backend process. All the database classes should be
+// derived from this class to obtain the connection interface.
+class PgConnection {
+protected:
+ PgEnv pgEnv; // Current connection environment
+ PGconn* pgConn; // Connection Structures
+ PGresult* pgResult; // Query Result
+ string pgErrorMessage; // Error messages container
+ int pgCloseConnection; // Flag indicating whether the connection should be closed or not
+
+public:
+ PgConnection(const char* dbName); // use reasonable defaults
+ PgConnection(const PgEnv& env, const char* dbName); // connect to the database with
+ // given environment and database name
+ virtual ~PgConnection(); // close connection and clean up
+
+ // Connection status and error messages
+ ConnStatusType Status();
+ int ConnectionBad() { return Status() == CONNECTION_BAD; }
+ const char* ErrorMessage() const { return pgErrorMessage.c_str(); }
+
+ // returns the database name of the connection
+ const char* DBName() const { return PQdb(pgConn); }
+
+ // Query Execution interface
+ ExecStatusType Exec(const char* query); // send a query to the backend
+ int ExecCommandOk(const char* query); // send a command and check if it's OK
+ int ExecTuplesOk(const char* query); // send a command and check if tuples are returned
+ PGnotify* Notifies();
+
+protected:
+ ConnStatusType Connect(const char* dbName);
+ void SetErrorMessage(const string&, int append = 0);
+ string IntToString(int);
+
+protected:
+ PgConnection();
+ PgConnection(const PgConnection&);
+};
+
+#endif // PGCONN_H