-
Notifications
You must be signed in to change notification settings - Fork 41
/
connection.h
144 lines (111 loc) · 2.45 KB
/
connection.h
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
//////////////////////////////////////////////////////////////////////////
//
// 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