MCPcopy Create free account
hub / github.com/KangLin/RabbitRemoteControl / OpenMySqlDatabase

Method OpenMySqlDatabase

Src/Database/Database.cpp:163–230  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

161}
162
163bool CDatabase::OpenMySqlDatabase(const CParameterDatabase *pPara,
164 const QString &szConnectName)
165{
166 bool success = false;
167 if(!pPara) return false;
168
169 if(!szConnectName.isEmpty())
170 m_szConnectName = szConnectName;
171
172 // 打开或创建数据库
173 m_database = QSqlDatabase::addDatabase("QMYSQL", m_szConnectName);
174 QString szDbName = pPara->GetDatabaseName();
175 if(szDbName.isEmpty()) {
176#if DEBUG
177 szDbName = "remote_control_dev";
178#else
179 szDbName = "remote_control";
180#endif
181 }
182
183 auto &net = pPara->m_Net;
184 m_database.setHostName(net.GetHost());
185 m_database.setPort(net.GetPort());
186 auto &user = net.m_User;
187 m_database.setUserName(user.GetName());
188 m_database.setPassword(user.GetPassword());
189
190 if (!m_database.open()) {
191 SetError("Failed to open mysql database: " + m_database.databaseName()
192 + "; Connect name: " + m_database.connectionName()
193 + "; Host: " + net.GetHost()
194 + "; Port: " + QString::number(net.GetPort())
195 + "; User: " + user.GetUser()
196 + "; Error: " + m_database.lastError().text()
197 );
198 qCritical(log) << GetError();
199 return false;
200 }
201
202 m_bOwner = true;
203
204 QSqlQuery query(GetDatabase());
205 success = query.exec("CREATE DATABASE IF NOT EXISTS " + szDbName);
206 if (!success) {
207 SetError("Failed to create mysql database: " + szDbName
208 + "; Error: " + query.lastError().text()
209 + "; Sql: " + query.executedQuery());
210 qCritical(log) << GetError();
211 return false;
212 }
213
214 success = query.exec("use " + szDbName);
215 if (!success) {
216 SetError("Failed to use " + szDbName
217 + "; Error: " + query.lastError().text()
218 + "; Sql: " + query.executedQuery());
219 qCritical(log) << GetError();
220 return false;

Callers

nothing calls this directly

Calls 10

GetDatabaseNameMethod · 0.80
GetHostMethod · 0.80
setPortMethod · 0.80
setPasswordMethod · 0.80
isEmptyMethod · 0.45
GetPortMethod · 0.45
GetNameMethod · 0.45
GetPasswordMethod · 0.45
openMethod · 0.45
GetUserMethod · 0.45

Tested by

no test coverage detected