1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144
|
//////////////////////////////////////////////////////////////////////////
//
// pgAgent - PostgreSQL Tools
//
// Copyright (C) 2002 - 2012, The pgAdmin Development Team
// This software is released under the PostgreSQL Licence
//
// connection.h - database connection
//
//////////////////////////////////////////////////////////////////////////
#ifndef CONNECTION_H
#define CONNECTION_H
#include <libpq-fe.h>
class DBresult;
class DBconn
{
protected:
DBconn(const wxString &, const wxString &);
~DBconn();
public:
wxString qtDbString(const wxString &value);
bool BackendMinimumVersion(int major, int minor);
static DBconn *Get(const wxString &connStr, const wxString &db);
static DBconn *InitConnection(const wxString &connectString);
static void ClearConnections(bool allIncludingPrimary = false);
static void SetBasicConnectString(const wxString &bcs)
{
basicConnectString = bcs;
}
static const wxString &GetBasicConnectString()
{
return basicConnectString;
}
wxString GetLastError();
wxString GetDBname()
{
return dbname;
}
bool IsValid()
{
return conn != 0;
}
DBresult *Execute(const wxString &query);
wxString ExecuteScalar(const wxString &query);
int ExecuteVoid(const wxString &query);
void Return();
private:
bool Connect(const wxString &connectString);
int minorVersion, majorVersion;
protected:
static wxString basicConnectString;
static DBconn *primaryConn;
wxString dbname, lastError, connStr;
PGconn *conn;
DBconn *next, *prev;
bool inUse;
friend class DBresult;
};
class DBresult
{
protected:
DBresult(DBconn *conn, const wxString &query);
public:
~DBresult();
wxString GetString(int col) const;
wxString GetString(const wxString &colname) const;
bool IsValid() const
{
return result != NULL;
}
bool HasData() const
{
return currentRow < maxRows;
}
void MoveNext()
{
if (currentRow < maxRows) currentRow++;
}
long RowsAffected() const
{
return atol(PQcmdTuples(result));
}
protected:
PGresult *result;
int currentRow, maxRows;
friend class DBconn;
};
class connInfo
{
public:
connInfo()
{
isValid = false;
connection_timeout = 0;
port = 0;
}
private:
wxString user;
unsigned long port;
wxString host;
wxString dbname;
unsigned long connection_timeout;
wxString password;
bool isValid;
wxString getConnectionString();
static connInfo getConnectionInfo(wxString connStr);
protected:
bool IsValidIP();
friend class DBconn;
};
#endif // CONNECTION_H
|