-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathconn.cpp
More file actions
97 lines (86 loc) · 3.42 KB
/
Copy pathconn.cpp
File metadata and controls
97 lines (86 loc) · 3.42 KB
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
#include "conn.h"
bool Conn::createConnection()
{
QSqlDatabase db = QSqlDatabase::addDatabase("QPSQL");
db.setHostName(query.hostName);
db.setPort(query.port);
db.setDatabaseName(query.dbName);
db.setUserName(query.userName);
db.setPassword(query.password);
if (!db.open()) {
QMessageBox::critical(nullptr, QObject::tr("Cannot open database"),
QObject::tr("Unable to establish a database connection.\n"
"This example needs PSQL support. Please read "
"the Qt SQL driver documentation for information how "
"to build it.\n\n"
"Click Cancel to exit."), QMessageBox::Cancel);
return false;
}
connDb = db;
return true;
}
CommandLineParseResult Conn::parseCommandLine(QCommandLineParser &parser, ConnQuery *query, QString *errorMessage)
{
parser.setSingleDashWordOptionMode(QCommandLineParser::ParseAsLongOptions);
const QCommandLineOption hostNameOption("host", "The hostname server to use.", "host");
parser.addOption(hostNameOption);
const QCommandLineOption portOption("port", "The server port.", "port");
parser.addOption(portOption);
const QCommandLineOption dbOption("db", "The database name.", "db name");
parser.addOption(dbOption);
const QCommandLineOption userOption("u", "The username.", "user");
parser.addOption(userOption);
const QCommandLineOption passwordOption("password", "The password.", "password");
parser.addOption(passwordOption);
const QCommandLineOption helpOption = parser.addHelpOption();
const QCommandLineOption versionOption = parser.addVersionOption();
if (!parser.parse(QCoreApplication::arguments())) {
*errorMessage = parser.errorText();
return CommandLineError;
}
if (parser.isSet(versionOption))
return CommandLineVersionRequested;
if (parser.isSet(helpOption))
return CommandLineHelpRequested;
if (parser.isSet(hostNameOption)) {
const QString host = parser.value(hostNameOption);
query->hostName = host;
if (QHostAddress(host).isNull() || QHostAddress(host).protocol() == QAbstractSocket::UnknownNetworkLayerProtocol) {
*errorMessage = "Bad host: " + host;
return CommandLineError;
}
}
if (parser.isSet(portOption)) {
const QString portString = parser.value(portOption);
query->port = portString.toInt();
if (query->port < 0) {
*errorMessage = "Bad port: " + portString;
return CommandLineError;
}
}
if (parser.isSet(dbOption)) {
const QString db = parser.value(dbOption);
query->dbName = db;
if (db.isNull() || db.isEmpty()) {
*errorMessage = "Bad db name: " + db;
return CommandLineError;
}
}
if (parser.isSet(userOption)) {
const QString user = parser.value(userOption);
query->userName = user;
if (user.isNull() || user.isEmpty()) {
*errorMessage = "Bad username: " + user;
return CommandLineError;
}
}
if (parser.isSet(passwordOption)) {
const QString password = parser.value(passwordOption);
query->password = password;
if (password.isNull() || password.isEmpty()) {
*errorMessage = "Bad password: " + password;
return CommandLineError;
}
}
return CommandLineOk;
}