@@ -52,9 +52,20 @@ const CParameterDatabase *CDatabase::GetParameter() const
5252 return m_pPara;
5353}
5454
55+ const QString CDatabase::GetError () const
56+ {
57+ return m_szError;
58+ }
59+
60+ void CDatabase::SetError (const QString &szErr)
61+ {
62+ m_szError = szErr;
63+ }
64+
5565bool CDatabase::OpenDatabase (const CParameterDatabase *pPara,
5666 const QString &szConnectName)
5767{
68+ SetError ();
5869 bool bRet = false ;
5970 if (!pPara) {
6071 bRet = OpenSQLiteDatabase (pPara, szConnectName);
@@ -71,6 +82,8 @@ bool CDatabase::OpenDatabase(const CParameterDatabase *pPara,
7182 bRet = OpenMySqlDatabase (pPara, szConnectName);
7283 else if (pPara->GetType () == " QODBC" )
7384 bRet = OpenODBCDatabase (pPara, szConnectName);
85+ else
86+ SetError (tr (" The database type is unknow:" ) + " " + pPara->GetType ());
7487
7588 QSqlDriver *driver = GetDatabase ().driver ();
7689 if (driver) {
@@ -127,12 +140,13 @@ bool CDatabase::OpenSQLiteDatabase(
127140 // 打开或创建数据库
128141 m_database = QSqlDatabase::addDatabase (" QSQLITE" , m_szConnectName);
129142 m_database.setDatabaseName (databasePath);
130-
143+
131144 if (!m_database.open ()) {
132- qCritical (log) << " Failed to open sqlite database:"
133- << m_database.lastError ().text ()
134- << " connect name:" << m_database.connectionName ()
135- << " database name:" << m_database.databaseName ();
145+ SetError (" Failed to open sqlite database: "
146+ + m_database.lastError ().text ()
147+ + " ; connect name: " + m_database.connectionName ()
148+ + " ; database name: " + m_database.databaseName ());
149+ qCritical (log) << GetError ();
136150 return false ;
137151 }
138152
@@ -169,31 +183,35 @@ bool CDatabase::OpenMySqlDatabase(const CParameterDatabase *pPara,
169183 auto &user = net.m_User ;
170184 m_database.setUserName (user.GetName ());
171185 m_database.setPassword (user.GetPassword ());
172-
186+
173187 if (!m_database.open ()) {
174- qCritical (log) << " Failed to open mysql database:"
175- << m_database.lastError ().text ()
176- << " Host:" << net.GetHost () << " Port:" << net.GetPort ()
177- << " User:" << user.GetUser ()
178- << " connect name:" << m_database.connectionName ()
179- << " database name:" << m_database.databaseName ();
188+ SetError (" Failed to open mysql database: "
189+ + m_database.lastError ().text ()
190+ + " ; Host: " + net.GetHost ()
191+ + " ; Port: " + QString::number (net.GetPort ())
192+ + " ; User: " + user.GetUser ()
193+ + " ; connect name: " + m_database.connectionName ()
194+ + " ; database name: " + m_database.databaseName ());
195+ qCritical (log) << GetError ();
180196 return false ;
181197 }
182198
183199 QSqlQuery query (GetDatabase ());
184200 success = query.exec (" CREATE DATABASE IF NOT EXISTS " + szDbName);
185201 if (!success) {
186- qCritical (log) << " Failed to create" << szDbName << " database:"
187- << query.lastError ().text ()
188- << " Sql:" << query.executedQuery ();
202+ SetError (" Failed to create " + szDbName + " database: "
203+ + query.lastError ().text ()
204+ + " ; Sql: " + query.executedQuery ());
205+ qCritical (log) << GetError ();
189206 return false ;
190207 }
191208
192209 success = query.exec (" use " + szDbName);
193210 if (!success) {
194- qCritical (log) << " Failed to use" << szDbName << " database:"
195- << query.lastError ().text ()
196- << " Sql:" << query.executedQuery ();
211+ SetError (" Failed to use " + szDbName + " database: "
212+ + query.lastError ().text ()
213+ + " ; Sql: " + query.executedQuery ());
214+ qCritical (log) << GetError ();
197215 return false ;
198216 }
199217
@@ -226,29 +244,32 @@ bool CDatabase::OpenODBCDatabase(const CParameterDatabase *pPara,
226244#endif
227245 }
228246 m_database.setDatabaseName (szDbName);
229-
247+
230248 if (!m_database.open ()) {
231- qCritical (log) << " Failed to open odbc database:"
232- << m_database.lastError ().text ()
233- << " connect name:" << m_database.connectionName ()
234- << " database name:" << m_database.databaseName ();
249+ SetError (" Failed to open odbc database: "
250+ + m_database.lastError ().text ()
251+ + " ; connect name: " + m_database.connectionName ()
252+ + " ; database name: " + m_database.databaseName ());
253+ qCritical (log) << GetError ();
235254 return false ;
236255 }
237-
256+
238257 QSqlQuery query (GetDatabase ());
239258 bool success = query.exec (" CREATE DATABASE IF NOT EXISTS " + szDbName);
240259 if (!success) {
241- qCritical (log) << " Failed to create" << szDbName << " database:"
242- << query.lastError ().text ()
243- << " Sql:" << query.executedQuery ();
260+ SetError (" Failed to create " + szDbName + " database: "
261+ + query.lastError ().text ()
262+ + " ; Sql: " + query.executedQuery ());
263+ qCritical (log) << GetError ();
244264 return false ;
245265 }
246266
247267 success = query.exec (" use " + szDbName);
248268 if (!success) {
249- qCritical (log) << " Failed to use" << szDbName << " database:"
250- << query.lastError ().text ()
251- << " Sql:" << query.executedQuery ();
269+ SetError (" Failed to use " + szDbName + " database: "
270+ + query.lastError ().text ()
271+ + " ; Sql: " + query.executedQuery ());
272+ qCritical (log) << GetError ();
252273 return false ;
253274 }
254275
@@ -299,9 +320,11 @@ void CDatabase::CloseDatabase()
299320
300321bool CDatabase::ExportToJsonFile (const QString &szFile)
301322{
323+ SetError ();
302324 QFile file (szFile);
303325 if (!file.open (QIODevice::WriteOnly | QIODevice::Text)) {
304- qCritical (log) << " Failed to open file:" << szFile << file.errorString ();
326+ SetError (" Failed to open export JSON file: " + szFile + " ; " + file.errorString ());
327+ qCritical (log) << GetError ();
305328 return false ;
306329 }
307330
@@ -333,9 +356,11 @@ bool CDatabase::ExportToJsonFile(const QString &szFile)
333356bool CDatabase::ImportFromJsonFile (const QString &szFile)
334357{
335358 bool bRet = false ;
359+ SetError ();
336360 QFile file (szFile);
337361 if (!file.open (QIODevice::ReadOnly | QIODevice::Text)) {
338- qCritical (log) << " Failed to open file:" << szFile << file.errorString ();
362+ SetError (" Failed to open import JSON file: " + szFile + " ; " + file.errorString ());
363+ qCritical (log) << GetError ();
339364 return false ;
340365 }
341366
@@ -346,13 +371,15 @@ bool CDatabase::ImportFromJsonFile(const QString &szFile)
346371 break ;
347372 auto root = doc.object ();
348373 if (root[" Title" ] != " Rabbit Remote Control" ) {
349- qCritical (log) << " The file format is error" ;
374+ SetError (" The file format is error" );
375+ qCritical (log) << GetError ();
350376 break ;
351377 }
352378 QString szVersion = root[" Version" ].toString ();
353379 if (RabbitCommon::CTools::VersionCompare (szVersion, m_MinVersion) < 0 ) {
354- qCritical (log) << " The version is not support:"
355- << szVersion << " <" << m_MinVersion;
380+ SetError (" The version is not support: "
381+ + szVersion + " < " + m_MinVersion);
382+ qCritical (log) << GetError ();
356383 break ;
357384 }
358385 bRet = ImportFromJson (doc.object ());
@@ -402,9 +429,10 @@ bool CDatabaseIcon::OnInitializeSqliteDatabase()
402429 ;
403430 bool success = query.exec (szSql);
404431 if (!success) {
405- qCritical (log) << " Failed to create icon sqlite table:"
406- << m_szTableName << query.lastError ().text ()
407- << " Sql:" << query.executedQuery ();
432+ SetError (" Failed to create icon sqlite table: "
433+ + m_szTableName + " ; error: " + query.lastError ().text ()
434+ + " ; Sql: " + query.executedQuery ());
435+ qCritical (log) << GetError ();
408436 return false ;
409437 }
410438 success = query.exec (" CREATE INDEX IF NOT EXISTS idx_" + m_szTableName + " _name ON " + m_szTableName + " (name)" );
@@ -439,9 +467,10 @@ bool CDatabaseIcon::OnInitializeMySqlDatabase()
439467 ;
440468 bool success = query.exec (szSql);
441469 if (!success) {
442- qCritical (log) << " Failed to create icon mysql table:"
443- << m_szTableName << query.lastError ().text ()
444- << " Sql:" << query.executedQuery ();
470+ SetError (" Failed to create icon mysql table: "
471+ + m_szTableName + " ; " + query.lastError ().text ()
472+ + " ; Sql: " + query.executedQuery ());
473+ qCritical (log) << GetError ();
445474 return false ;
446475 }
447476
@@ -487,8 +516,9 @@ int CDatabaseIcon::GetIcon(const QIcon &icon)
487516 query.bindValue (" :data" , data);
488517 bRet = query.exec ();
489518 if (!bRet) {
490- qCritical (log) << " Failed to insert icon hash:"
491- << szHash << query.lastError ().text ();
519+ SetError (" Failed to insert icon hash: "
520+ + szHash + " ; " + query.lastError ().text ());
521+ qCritical (log) << GetError ();
492522 return 0 ;
493523 }
494524 return query.lastInsertId ().toInt ();
@@ -500,8 +530,9 @@ int CDatabaseIcon::GetIcon(const QIcon &icon)
500530 query.bindValue (" :name" , szName);
501531 bRet = query.exec ();
502532 if (!bRet) {
503- qCritical (log) << " Failed to select icon name:"
504- << szName << query.lastError ().text ();
533+ SetError (" Failed to select icon name: "
534+ + szName + " ; " + query.lastError ().text ());
535+ qCritical (log) << GetError ();
505536 return 0 ;
506537 }
507538 if (query.next ()) {
@@ -514,8 +545,9 @@ int CDatabaseIcon::GetIcon(const QIcon &icon)
514545 query.bindValue (" :name" , szName);
515546 bRet = query.exec ();
516547 if (!bRet) {
517- qCritical (log) << " Failed to insert icon name:"
518- << szName << query.lastError ().text ();
548+ SetError (" Failed to insert icon name: "
549+ + szName + " ; " + query.lastError ().text ());
550+ qCritical (log) << GetError ();
519551 return 0 ;
520552 }
521553 return query.lastInsertId ().toInt ();
@@ -532,8 +564,9 @@ QIcon CDatabaseIcon::GetIcon(int id)
532564 query.bindValue (" :id" , id);
533565 bool bRet = query.exec ();
534566 if (!bRet) {
535- qCritical (log) << " Failed to get icon id:"
536- << id << query.lastError ().text ();
567+ SetError (" Failed to get icon id: "
568+ + QString::number (id) + " ; " + query.lastError ().text ());
569+ qCritical (log) << GetError ();
537570 return icon;
538571 }
539572
0 commit comments